diff --git a/Classes/Controller/LogController.php b/Classes/Controller/LogController.php index 66b4900..ed930bd 100644 --- a/Classes/Controller/LogController.php +++ b/Classes/Controller/LogController.php @@ -1,14 +1,8 @@ settings = $originalSettings; } - /** - * Injects the content-Repository - * - * @param \Fixpunkt\FpNewsletter\Domain\Repository\LogRepository $logRepository - */ - public function injectLogRepository(\Fixpunkt\FpNewsletter\Domain\Repository\LogRepository $logRepository) - { - $this->logRepository = $logRepository; - } - - /** - * Injects the helpers utility - * - * @param \Fixpunkt\FpNewsletter\Utility\HelpersUtility $helpersUtility - */ - public function injectHelpersUtility(\Fixpunkt\FpNewsletter\Utility\HelpersUtility $helpersUtility) - { - $this->helpersUtility = $helpersUtility; - } - - /** * action list * @@ -111,13 +78,13 @@ public function listAction() /** * action new * - * @param Log $log + * @param \Fixpunkt\FpNewsletter\Domain\Model\Log $log * Log-Entry * @param int $error * Error-Code * @return void */ - public function newAction(Log $log = null, $error = 0) + public function newAction(\Fixpunkt\FpNewsletter\Domain\Model\Log $log = null, $error = 0) { $genders = [ "0" => $this->settings['gender']['please'], @@ -142,6 +109,13 @@ public function newAction(Log $log = null, $error = 0) $required[trim($field)] = 1; } } + if ($log) { + $securityhash = $this->request->hasArgument('securityhash') ? $this->request->getArgument('securityhash') : ''; + if (($log->getSecurityhash() != $securityhash) || !$securityhash) { + $error = 1; + $log = NULL; + } + } if (! $log) { $log = $this->objectManager->get('Fixpunkt\\FpNewsletter\\Domain\\Model\\Log'); } @@ -166,15 +140,6 @@ public function newAction(Log $log = null, $error = 0) $GLOBALS['TSFE']->fe_user->setKey('ses', 'mcaptchaop', $operator); $GLOBALS['TSFE']->fe_user->storeSessionData(); } - if (!$error && $this->settings['checkForRequiredExtensions'] && $this->settings['table']=='tt_address') { - if (!\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('tt_address')) { - $error = 20; - } - if ((intval($this->settings['module_sys_dmail_html'])>-1 || $this->settings['module_sys_dmail_category']) - && !\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('direct_mail')) { - $error = 21; - } - } $this->view->assign('genders', $genders); $this->view->assign('optional', $optional); $this->view->assign('required', $required); @@ -182,34 +147,6 @@ public function newAction(Log $log = null, $error = 0) $this->view->assign('log', $log); } - /** - * action resend - * - * @return void - */ - public function resendAction() - { - $log = null; - $subscribeVerifyUid = $this->settings['subscribeVerifyUid']; - $email = $this->request->hasArgument('email') ? $this->request->getArgument('email') : ''; - if ($email && $subscribeVerifyUid) { - $maxDate = time() - 86400 * $this->settings['daysExpire']; - $storagePidsArray = $this->logRepository->getStoragePids(); - $languageAspect = GeneralUtility::makeInstance(Context::class)->getAspect('language'); - $sys_language_uid = intval($languageAspect->getId()); - if ($sys_language_uid > 0 && $this->settings['languageMode']) { - $log = $this->logRepository->getByEmailAndPid($email, $storagePidsArray, $sys_language_uid, $maxDate); - } else { - $log = $this->logRepository->getByEmailAndPid($email, $storagePidsArray, 0, $maxDate); - } - if ($log) { - $this->prepareEmail($log, true, false, true, false, $log->getSecurityhash(), $subscribeVerifyUid); - } - } - $this->view->assign('email', $email); - $this->view->assign('log', $log); - } - /** * action subscribeExt * @@ -242,17 +179,11 @@ public function subscribeExtAction() /** * action create * - * @param Log|null $log + * @param \Fixpunkt\FpNewsletter\Domain\Model\Log $log * @return void - * @throws StopActionException - * @throws SiteNotFoundException */ - public function createAction(Log $log = null) + public function createAction(\Fixpunkt\FpNewsletter\Domain\Model\Log $log) { - if (!$log) { - $this -> addFlashMessage("Missing Log entry!", "", AbstractMessage::ERROR); - $this -> redirect('new'); - } $hash = md5(uniqid($log->getEmail(), true)); $log->setSecurityhash($hash); // Sprachsetzung sollte eigentlich automatisch passieren, tut es wohl aber nicht. @@ -281,36 +212,30 @@ public function createAction(Log $log = null) $email = $log->getEmail(); $dbuidext = 0; if (\TYPO3\CMS\Core\Utility\GeneralUtility::validEmail($email)) { - if ($this->settings['table'] == 'tt_address' || $this->settings['table'] == 'fe_users') { - $dbuidext = $this->logRepository->getUidFromExternal($email, $log->getPid(), $this->settings['table']); + if ($this->settings['table'] == 'tt_address') { + $dbuidext = $this->logRepository->getFromTtAddress($email, $log->getPid()); } } else { $error = 8; } if ($this->settings['reCAPTCHA_site_key'] && $this->settings['reCAPTCHA_secret_key']) { - $requestFactory = GeneralUtility::makeInstance(RequestFactory::class); - - $url = "https://www.google.com/recaptcha/api/siteverify"; - $additionalOptions = [ - 'form_params' => [ - 'secret' => $this->settings['reCAPTCHA_secret_key'], - 'response' => $log->getRetoken() - ] - ]; - - $request = $requestFactory->request($url, 'POST', $additionalOptions); - - if ($request->getStatusCode() === 200) { - $resultBody = json_decode($request->getBody()->getContents(), true); - if (!$resultBody['success']) - $error = 9; - - } else { + // Captcha checken + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, [ + 'secret' => $this->settings['reCAPTCHA_secret_key'], + 'response' => $log->getRetoken() + ]); + $output = json_decode(curl_exec($ch), true); + curl_close($ch); + if (! $output["success"]) { $error = 9; } } if ($this->settings['mathCAPTCHA']) { - $tmp_error = $this->helpersUtility->checkMathCaptcha(intval($log->getMathcaptcha())); + $tmp_error = $this->checkMathCaptcha(intval($log->getMathcaptcha())); if ($tmp_error > 0) { $error = $tmp_error; } @@ -334,7 +259,8 @@ public function createAction(Log $log = null) } else if ($error >= 8) { $this->redirect('new', null, null, [ 'log' => $log, - 'error' => $error + 'error' => $error, + 'securityhash' => $log->getSecurityhash() ]); } if ($this->settings['disableErrorMsg'] && ($error == 5 || $error == 6)) { @@ -354,25 +280,31 @@ public function createAction(Log $log = null) /** * action unsubscribe with form * - * @param Log|null $log Log-Entry - * @param int $error Error-Code + * @param \Fixpunkt\FpNewsletter\Domain\Model\Log $log + * Log-Entry + * @param int $error + * Error-Code * @return void - * @throws \Exception */ - public function unsubscribeAction(Log $log = null, int $error = 0) + public function unsubscribeAction(\Fixpunkt\FpNewsletter\Domain\Model\Log $log = null, $error = 0) { $storagePidsArray = $this->logRepository->getStoragePids(); $pid = intval($storagePidsArray[0]); + if ($log) { + $securityhash = $this->request->hasArgument('securityhash') ? $this->request->getArgument('securityhash') : ''; + if ($log->getSecurityhash() != $securityhash || !$securityhash) { + $error = 1; + $log = NULL; + } + } if (! $log) { $log = $this->objectManager->get('Fixpunkt\\FpNewsletter\\Domain\\Model\\Log'); $log->setPid($pid); - // default E-Mail holen, falls log noch nicht definiert ist; default email from unsubscribeDMAction - $email = $this->request->hasArgument('defaultEmail') ? $this->request->getArgument('defaultEmail') : ''; - if (! $email && $this->settings['parameters']['email']) { - $email = $_GET[$this->settings['parameters']['email']]; - if (! $email) { - $email = $_POST[$this->settings['parameters']['email']]; - } + } + if ($this->settings['parameters']['email']) { + $email = $_GET[$this->settings['parameters']['email']]; + if (! $email) { + $email = $_POST[$this->settings['parameters']['email']]; } if ($email) { $log->setEmail($email); @@ -410,22 +342,16 @@ public function unsubscribeDMAction() $u = intval($_GET['u']); $a = $_GET['a']; if ($t && $t == $this->settings['table'] && $u && $a) { - $user = $this->logRepository->getUserFromExternal($u, $t); + $user = $this->logRepository->getUserFromTtAddress($u); // zum testen: echo GeneralUtility::stdAuthCode($user, 'uid'); - if (is_array($user) && isset($user['email'])) { + if ($user) { if (preg_match('/^[0-9a-f]{8}$/', $a) && ($a == GeneralUtility::stdAuthCode($user, 'uid'))) { - if ($this->settings['dmUnsubscribeMode'] == 1) { - $this->redirect('unsubscribe', null, null, [ - 'defaultEmail' => $user['email'] - ]); - } else { - // unsubscribe user now - $GLOBALS['TSFE']->fe_user->setKey('ses', 'authDM', $a); - $GLOBALS['TSFE']->fe_user->storeSessionData(); - $this->redirect('delete', null, null, [ - 'user' => $user - ]); - } + // unsubscribe user now + $GLOBALS['TSFE']->fe_user->setKey('ses', 'authDM', $a); + $GLOBALS['TSFE']->fe_user->storeSessionData(); + $this->redirect('delete', null, null, [ + 'user' => $user + ]); } else { $error = 10; } @@ -439,123 +365,122 @@ public function unsubscribeDMAction() } /** - * action delete a user from the DB: unsubscribe him from the newsletter + * action delete an user from the DB: unsubscribe him from the newsletter * - * @param Log $log + * @param \Fixpunkt\FpNewsletter\Domain\Model\Log $log * @param array $user * @return void */ - public function deleteAction(Log $log = null, array $user = []) + public function deleteAction(\Fixpunkt\FpNewsletter\Domain\Model\Log $log = null, $user = []) { $error = 0; $messageUid = 0; $skipCaptchaTest = false; + $checkSession = false; $storagePidsArray = $this->logRepository->getStoragePids(); - if (! $log && isset($user['email'])) { + if ($log) { + // if we come from unsubscribeAction, an email must be present, but no UID! + if ($log->getUid() || !$log->getEmail()) { + $error = 1; + } + } elseif (isset($user['email'])) { + // we came from unsubscribeDMAction: an email must be present too! $log = $this->objectManager->get('Fixpunkt\\FpNewsletter\\Domain\\Model\\Log'); $log->setEmail($user['email']); $log->setPid($user['pid']); - } - $email = $log->getEmail(); - $pid = $log->getPid(); - if (! $pid) { - $pid = intval($storagePidsArray[0]); - } - // zum testen: var_dump ($storagePidsArray); - $hash = md5(uniqid($log->getEmail(), true)); - $log->setSecurityhash($hash); - $dbuidext = 0; - $languageAspect = GeneralUtility::makeInstance(Context::class)->getAspect('language'); - $sys_language_uid = intval($languageAspect->getId()); - if ($sys_language_uid > 0 && ! $this->settings['languageMode']) { - $log->set_languageUid(-1); - } else { - $log->set_languageUid($sys_language_uid); - } + $checkSession = true; + } + if ($error == 0) { + $email = $log->getEmail(); + $pid = $log->getPid(); + if (!$pid) { + $pid = intval($storagePidsArray[0]); + } + // zum testen: var_dump ($storagePidsArray); + $hash = md5(uniqid($log->getEmail(), true)); + $log->setSecurityhash($hash); + $dbuidext = 0; + $languageAspect = GeneralUtility::makeInstance(Context::class)->getAspect('language'); + $sys_language_uid = intval($languageAspect->getId()); + if ($sys_language_uid > 0 && !$this->settings['languageMode']) { + $log->set_languageUid(-1); + } else { + $log->set_languageUid($sys_language_uid); + } - if (\TYPO3\CMS\Core\Utility\GeneralUtility::validEmail($email)) { - if ($this->settings['table'] == 'tt_address' || $this->settings['table'] == 'fe_users') { - if ($this->settings['searchPidMode'] == 1) { - $dbuidext = $this->logRepository->getUidFromExternal($email, $storagePidsArray, $this->settings['table']); - } else { - $dbuidext = $this->logRepository->getUidFromExternal($email, $pid, $this->settings['table']); + if (\TYPO3\CMS\Core\Utility\GeneralUtility::validEmail($email)) { + if ($this->settings['table'] == 'tt_address') { + if ($this->settings['searchPidMode'] == 1) { + $dbuidext = $this->logRepository->getFromTtAddressCheckAllFolders($email, $storagePidsArray); + } else { + $dbuidext = $this->logRepository->getFromTtAddress($email, $pid); + } + // zum testen: echo "uid $dbuidext mit $email, $pid"; } - // zum testen: echo "uid $dbuidext mit $email, $pid"; - if ($dbuidext > 0) { - $extAddress = $this->logRepository->getUserFromExternal($dbuidext,$this->settings['table']); - $log->setLastname($extAddress['last_name']); - $log->setFirstname($extAddress['first_name']); - $log->setTitle($extAddress['title']); - if ($this->settings['table']=='tt_address' && $extAddress['gender']) { - $gender = 0; - if ($extAddress['gender']=='f') $gender = 1; - elseif ($extAddress['gender']=='m') $gender = 2; - elseif ($extAddress['gender']=='v') $gender = 3; - $log->setGender($gender); + } else { + $error = 8; + } + if ($this->settings['table'] && ($dbuidext == 0)) { + $error = 7; + } + if ($checkSession) { + // wenn man von unsubscribeDM kommt, muss die Session noch überprüft werden + $a = $GLOBALS['TSFE']->fe_user->getKey('ses', 'authDM'); + if ($a) { + // authCode von unsubscribeDM ist vorhanden! + $GLOBALS['TSFE']->fe_user->setKey('ses', 'authDM', ''); + $GLOBALS['TSFE']->fe_user->storeSessionData(); + if (preg_match('/^[0-9a-f]{8}$/', $a) && ($a == GeneralUtility::stdAuthCode($user, 'uid'))) { + $skipCaptchaTest = true; + } else { + $error = 1; } } + if (!$a) { + $error = 1; + } } - } else { - $error = 8; - } - if ($this->settings['table'] && ($dbuidext == 0)) { - $error = 7; - } - $a = $GLOBALS['TSFE']->fe_user->getKey('ses', 'authDM'); - if ($a) { - // authCode von unsubscribeDM ist vorhanden! - $GLOBALS['TSFE']->fe_user->setKey('ses', 'authDM', ''); - $GLOBALS['TSFE']->fe_user->storeSessionData(); - if (preg_match('/^[0-9a-f]{8}$/', $a) && ($a == GeneralUtility::stdAuthCode($user, 'uid'))) { - $skipCaptchaTest = true; - } - } - if (! $skipCaptchaTest) { - if ($this->settings['reCAPTCHA_site_key'] && $this->settings['reCAPTCHA_secret_key']) { - $requestFactory = GeneralUtility::makeInstance(RequestFactory::class); - - $url = "https://www.google.com/recaptcha/api/siteverify"; - $additionalOptions = [ - 'form_params' => [ + if (!$skipCaptchaTest) { + if ($this->settings['reCAPTCHA_site_key'] && $this->settings['reCAPTCHA_secret_key']) { + // Captcha checken + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, [ 'secret' => $this->settings['reCAPTCHA_secret_key'], 'response' => $log->getRetoken() - ] - ]; - - $request = $requestFactory->request($url, 'POST', $additionalOptions); - - if ($request->getStatusCode() === 200) { - $resultBody = json_decode($request->getBody()->getContents(), true); - if (!$resultBody['success']) + ]); + $output = json_decode(curl_exec($ch), true); + curl_close($ch); + if (!$output["success"]) { $error = 9; - - } else { - $error = 9; + } } - } - if ($this->settings['mathCAPTCHA']) { - $tmp_error = $this->helpersUtility->checkMathCaptcha(intval($log->getMathcaptcha())); - if ($tmp_error > 0) { - $error = $tmp_error; + if ($this->settings['mathCAPTCHA']) { + $tmp_error = $this->checkMathCaptcha(intval($log->getMathcaptcha())); + if ($tmp_error > 0) { + $error = $tmp_error; + } } } + if ($this->settings['honeypot'] && $log->getExtras()) { + // Der Honigtopf ist gefüllt + $error = 10; + } + if ($error == 7) { + $log->setStatus(8); + } else { + $log->setStatus(0); + } + if ($log->getUid() > 0) { + $this->logRepository->update($log); + } else { + $this->logRepository->add($log); + } + $persistenceManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager'); + $persistenceManager->persistAll(); } - if ($this->settings['honeypot'] && $log->getExtras()) { - // Der Honigtopf ist gefüllt - $error = 10; - } - if ($error == 7) { - $log->setStatus(8); - } else { - $log->setStatus(0); - } - if ($log->getUid() > 0) { - $this->logRepository->update($log); - } else { - $this->logRepository->add($log); - } - $persistenceManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager'); - $persistenceManager->persistAll(); if (! $error) { if ($this->settings['doubleOptOut']) { @@ -571,8 +496,14 @@ public function deleteAction(Log $log = null, array $user = []) $this->logRepository->update($log); $persistenceManager->persistAll(); } else { - if ($this->settings['table'] == 'tt_address' || $this->settings['table'] == 'fe_users') { - $this->deleteThisUser($dbuidext); + if ($this->settings['table'] == 'tt_address') { + if ($this->settings['module_sys_dmail_category']) { + $dmail_cats = str_replace(' ', '', $this->settings['module_sys_dmail_category']); + $dmCatArr = explode(',', $dmail_cats); + } else { + $dmCatArr = []; + } + $this->logRepository->deleteInTtAddress($dbuidext, $this->settings['deleteMode'], $dmCatArr); } if (($this->settings['email']['adminMail'] && ! $this->settings['email']['adminMailBeforeVerification']) || ($this->settings['email']['enableConfirmationMails'])) { $toAdmin = ($this->settings['email']['adminMail'] && ! $this->settings['email']['adminMailBeforeVerification']); @@ -586,7 +517,8 @@ public function deleteAction(Log $log = null, array $user = []) } else if ($error >= 8) { $this->redirect('unsubscribe', null, null, [ 'log' => $log, - 'error' => $error + 'error' => $error, + 'securityhash' => $log->getSecurityhash() ]); } if ($this->settings['disableErrorMsg'] && ($error == 7)) { @@ -648,8 +580,8 @@ public function verifyAction() } else { $dbuidext = 0; if (GeneralUtility::validEmail($dbemail)) { - if ($this->settings['table'] == 'tt_address' || $this->settings['table'] == 'fe_users') { - $dbuidext = $this->logRepository->getUidFromExternal($dbemail, $address->getPid(), $this->settings['table']); + if ($this->settings['table'] == 'tt_address') { + $dbuidext = $this->logRepository->getFromTtAddress($dbemail, $address->getPid()); } } if ($dbuidext > 0) { @@ -667,34 +599,6 @@ public function verifyAction() $dmCatArr = []; } $success = $this->logRepository->insertInTtAddress($address, $html, $dmCatArr); - } else if ($this->settings['table'] == 'fe_users' && $this->settings['password']) { - $frontendUser = new \TYPO3\CMS\Extbase\Domain\Model\FrontendUser(); - $password = $this->settings['password']; - $hashInstance = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashFactory::class)->getDefaultHashInstance('FE'); - $hashedPassword = $hashInstance->getHashedPassword($password); - $frontendUser->setUsername($dbemail); - $frontendUser->setPassword($hashedPassword); - $frontendUser->setPid(intval($address->getPid())); - $frontendUser->setEmail($dbemail); - if ($address->getFirstName() || $address->getLastName()) { - $frontendUser->setFirstName($address->getFirstName()); - $frontendUser->setLastName($address->getLastName()); - $frontendUser->setName(trim($address->getFirstName() . ' ' . $address->getLastName())); - } - $frontendUser->setAddress($address->getAddress()); - $frontendUser->setZip($address->getZip()); - $frontendUser->setCity($address->getCity()); - $frontendUser->setCountry($address->getCountry()); - $frontendUser->setTelephone($address->getPhone()); - $frontendUser->setFax($address->getFax()); - $frontendUser->setCompany($address->getCompany()); - if ($dmCat) { - $frontendUser->_setProperty('usergroup', $dmCat); - //$frontendUser->addUserGroup($this->frontendUserGroupRepository->findByUid($this->settings['frontendUserGroup'])); - } - $frontendUserRepository = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Domain\\Repository\\FrontendUserRepository'); - $frontendUserRepository->add($frontendUser); - $success = 1; } if ($this->settings['table'] && $success < 1) { $error = 8; @@ -763,11 +667,11 @@ public function verifyUnsubscribeAction() } else { $dbuidext = 0; if (\TYPO3\CMS\Core\Utility\GeneralUtility::validEmail($dbemail)) { - if ($this->settings['table'] == 'tt_address' || $this->settings['table'] == 'fe_users') { + if ($this->settings['table'] == 'tt_address') { if ($this->settings['searchPidMode'] == 1) { - $dbuidext = $this->logRepository->getUidFromExternal($dbemail, $this->logRepository->getStoragePids(), $this->settings['table']); + $dbuidext = $this->logRepository->getFromTtAddressCheckAllFolders($dbemail, $this->logRepository->getStoragePids()); } else { - $dbuidext = $this->logRepository->getUidFromExternal($dbemail, $address->getPid(), $this->settings['table']); + $dbuidext = $this->logRepository->getFromTtAddress($dbemail, $address->getPid()); } } } @@ -779,8 +683,14 @@ public function verifyUnsubscribeAction() $persistenceManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager'); $persistenceManager->persistAll(); - if ($this->settings['table'] == 'tt_address' || $this->settings['table'] == 'fe_users') { - $this->deleteThisUser($dbuidext); + if ($this->settings['table'] == 'tt_address') { + if ($this->settings['module_sys_dmail_category']) { + $dmail_cats = str_replace(' ', '', $this->settings['module_sys_dmail_category']); + $dmCatArr = explode(',', $dmail_cats); + } else { + $dmCatArr = []; + } + $this->logRepository->deleteInTtAddress($dbuidext, $this->settings['deleteMode'], $dmCatArr); } if (($this->settings['email']['adminMail'] && ! $this->settings['email']['adminMailBeforeVerification']) || ($this->settings['email']['enableConfirmationMails'])) { $toAdmin = ($this->settings['email']['adminMail'] && ! $this->settings['email']['adminMailBeforeVerification']); @@ -806,28 +716,41 @@ public function verifyUnsubscribeAction() } /** - * Delete a user + * Prüft, ob ein angegebenes math. Captcha OK ist * - * @param int $uid uid of the user + * @param int $result + * @return int */ - protected function deleteThisUser($uid) { - if ($this->settings['table'] == 'tt_address') { - if ($this->settings['module_sys_dmail_category']) { - $dmail_cats = str_replace(' ', '', $this->settings['module_sys_dmail_category']); - $dmCatArr = explode(',', $dmail_cats); + public function checkMathCaptcha(int $result) + { + $error = 0; + if($GLOBALS['TSFE']->fe_user->getKey('ses', 'mcaptcha1') !== NULL && $GLOBALS['TSFE']->fe_user->getKey('ses', 'mcaptcha2') !== NULL && $GLOBALS['TSFE']->fe_user->getKey('ses', 'mcaptchaop') !== NULL) { + //$result = intval($log->getMathcaptcha()); + $no1 = intval($GLOBALS['TSFE']->fe_user->getKey('ses', 'mcaptcha1')); + $no2 = intval($GLOBALS['TSFE']->fe_user->getKey('ses', 'mcaptcha2')); + $operator = intval($GLOBALS['TSFE']->fe_user->getKey('ses', 'mcaptchaop')); + if ($operator == 1) { + $real_result = $no1 + $no2; } else { - $dmCatArr = []; + $real_result = $no1 - $no2; + } + if ($result != $real_result) { + $error = 9; + } else { + $GLOBALS['TSFE']->fe_user->setKey('ses', 'mcaptcha1', NULL); + $GLOBALS['TSFE']->fe_user->setKey('ses', 'mcaptcha2', NULL); + $GLOBALS['TSFE']->fe_user->setKey('ses', 'mcaptchaop', NULL); } } else { - $dmCatArr = []; + $error = 9; } - $this->logRepository->deleteExternalUser($uid, $this->settings['deleteMode'], $dmCatArr, $this->settings['table']); + return $error; } /** * Prepare Array for emails and trigger sending of emails * - * @param Log $log + * @param \Fixpunkt\FpNewsletter\Domain\Model\Log $log * @param boolean $isSubscribe * Subscription or unsubscription? * @param boolean $isConfirmation @@ -841,7 +764,7 @@ protected function deleteThisUser($uid) { * @param integer $verifyUid * UID of the verification page */ - protected function prepareEmail(Log &$log, $isSubscribe = true, $isConfirmation = false, $toUser = false, $toAdmin = false, $hash = '', $verifyUid = 0) + protected function prepareEmail(\Fixpunkt\FpNewsletter\Domain\Model\Log &$log, $isSubscribe = true, $isConfirmation = false, $toUser = false, $toAdmin = false, $hash = '', $verifyUid = 0) { $genders = [ "0" => '', @@ -857,7 +780,6 @@ protected function prepareEmail(Log &$log, $isSubscribe = true, $isConfirmation $dataArray = []; $dataArray['uid'] = $log->getUid(); $dataArray['sys_language_uid'] = $log->get_languageUid(); - $dataArray['gender_id'] = $log->getGender(); $dataArray['gender'] = $genders[$log->getGender()]; $dataArray['title'] = $log->getTitle(); $dataArray['firstname'] = $log->getFirstname(); @@ -962,7 +884,7 @@ protected function sendTemplateEmail(array $recipient, array $sender, $subject, $extbaseFrameworkConfiguration = $this->configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK); $languageAspect = GeneralUtility::makeInstance(Context::class)->getAspect('language'); $sys_language_uid = intval($languageAspect->getId()); - if (!$toAdmin && !$this->settings['email']['dontAppendL']) { + if (($sys_language_uid > 0) && ! $toAdmin && ! $this->settings['email']['dontAppendL']) { $templateName .= $sys_language_uid; } $extensionName = $this->request->getControllerExtensionName(); @@ -988,27 +910,31 @@ protected function sendTemplateEmail(array $recipient, array $sender, $subject, $emailViewText->setFormat('txt'); $emailViewText->assignMultiple($variables); $emailBodyText = $emailViewText->render(); - if ($this->settings['debug']) { - echo "###" . $emailBodyText . '###'; - echo "###" . $emailBodyHtml . '###'; - return; - } + // echo "###" . $emailBodyText . '###'; + // return; /** @var $message \TYPO3\CMS\Core\Mail\MailMessage */ $message = $this->objectManager->get('TYPO3\\CMS\\Core\\Mail\\MailMessage'); - foreach ($recipient as $key => $value) { - $email = $key; - $name = $value; - } - $message->to(new \Symfony\Component\Mime\Address($email, $name)); - foreach ($sender as $key => $value) { - $email = $key; - $name = $value; - } - $message->from(new \Symfony\Component\Mime\Address($email, $name)); - $message->subject($subject); - $message->text($emailBodyText); - $message->html($emailBodyHtml); + if (TYPO3_branch == '9.5') { + $message->setTo($recipient); + $message->setFrom($sender)->setSubject($subject); + $message->setBody($emailBodyText, 'text/plain'); + $message->addPart($emailBodyHtml, 'text/html'); + } else { + foreach ($recipient as $key => $value) { + $email = $key; + $name = $value; + } + $message->to(new \Symfony\Component\Mime\Address($email, $name)); + foreach ($sender as $key => $value) { + $email = $key; + $name = $value; + } + $message->from(new \Symfony\Component\Mime\Address($email, $name)); + $message->subject($subject); + $message->text($emailBodyText); + $message->html($emailBodyHtml); + } $message->send(); return $message->isSent(); } diff --git a/Classes/Domain/Model/Log.php b/Classes/Domain/Model/Log.php index d5dc6ce..ad57072 100644 --- a/Classes/Domain/Model/Log.php +++ b/Classes/Domain/Model/Log.php @@ -362,7 +362,7 @@ public function getEmail() */ public function setEmail($email) { - $this->email = trim($email); + $this->email = $email; } /** diff --git a/Classes/Domain/Repository/LogRepository.php b/Classes/Domain/Repository/LogRepository.php index 858523b..d3d5f8b 100644 --- a/Classes/Domain/Repository/LogRepository.php +++ b/Classes/Domain/Repository/LogRepository.php @@ -23,55 +23,21 @@ class LogRepository extends \TYPO3\CMS\Extbase\Persistence\Repository { - /** - * getByEmailAndPid: find user entry - * @param string $email: email - * @param array $pid: PIDs - * @param int $sys_language_uid: language - * @param int $maxDate: x days ago - * @return array|\TYPO3\CMS\Extbase\Persistence\QueryResultInterface - */ - function getByEmailAndPid(string $email, array $pids, int $sys_language_uid, int $maxDate) - { - $query = $this->createQuery(); - $constraints = []; - $constraints[] = $query->in('pid', $pids); - $constraints[] = $query->equals('email', $email); - $constraints[] = $query->equals('status', 1); - $constraints[] = $query->greaterThan('crdate', $maxDate); - if ($sys_language_uid > 0) { - $query->getQuerySettings()->setRespectSysLanguage(false); - //$query->getQuerySettings()->setSysLanguageUid($sys_language_uid); - $constraints[] = $query->equals("sys_language_uid", $sys_language_uid); - } - $query->matching($query->logicalAnd(...$constraints)); - $query->setOrderings([ - 'crdate' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING - ]); - return $query->execute()->getFirst(); - } - - /** - * getUidFromExternal: find user ID + /** + * getFromTTAddress: find user ID * @param string $email: die Email-Adresse wurde schon vorher geprüft! - * @param mixed $pid: PID oder Liste mit PIDs - * @param string $table: tt_address oder fe_users - * @return integer + * @param integer $pid + * @return integer */ - function getUidFromExternal($email, $pid, $table) + function getFromTTAddress($email, $pid) { $dbuid = 0; - $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table); - if (is_numeric($pid)) { - $where = $queryBuilder->expr()->eq('pid', $queryBuilder->createNamedParameter($pid, \PDO::PARAM_INT)); - } else { - $where = $queryBuilder->expr()->in('pid', $queryBuilder->createNamedParameter($pid, Connection::PARAM_INT_ARRAY)); - } + $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_address'); $statement = $queryBuilder ->select('uid') - ->from($table) + ->from('tt_address') ->where( - $where + $queryBuilder->expr()->eq('pid', $queryBuilder->createNamedParameter($pid, \PDO::PARAM_INT)) ) ->andWhere( $queryBuilder->expr()->eq('email', $queryBuilder->createNamedParameter($email)) @@ -79,23 +45,48 @@ function getUidFromExternal($email, $pid, $table) ->execute(); while ($row = $statement->fetch()) { $dbuid = intval($row['uid']); - break; } return $dbuid; } /** - * getUserFromExternal: found user array - * @param integer $uid: UID of the user - * @param string $table: tt_address or fe_users + * getFromTTAddress: find user ID in more folders an take the first finding + * @param string $email: die Email-Adresse wurde schon vorher geprüft! + * @param array $pidsArray + * @return integer + */ + function getFromTtAddressCheckAllFolders($email, $pidsArray) + { + $dbuid = 0; + $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_address'); + $statement = $queryBuilder + ->select('uid') + ->from('tt_address') + ->where( + $queryBuilder->expr()->in('pid', $queryBuilder->createNamedParameter($pidsArray, Connection::PARAM_INT_ARRAY)) + ) + ->andWhere( + $queryBuilder->expr()->eq('email', $queryBuilder->createNamedParameter($email)) + ) + ->execute(); + while ($row = $statement->fetch()) { + $dbuid = intval($row['uid']); + break; + } + return $dbuid; + } + + /** + * getUserFromTTAddress: find user array + * @param integer $uid: UID des User * @return array */ - function getUserFromExternal($uid, $table) + function getUserFromTTAddress($uid) { - $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table); + $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_address'); $statement = $queryBuilder ->select('*') - ->from($table) + ->from('tt_address') ->where( $queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)) ) @@ -143,7 +134,7 @@ function insertInTtAddress($address, $mode, $dmCatArr = []) { } if ($address->getCategories()) { // Priorität haben die Kategorien aus dem Formular/Log-Eintrag - $dmCatArr = explode(',', $address->getCategories()); + $dmCatArr = explode(',', $address->getCategories()); } if (is_array($dmCatArr) && count($dmCatArr)>0) { $insert['module_sys_dmail_category'] = count($dmCatArr); @@ -160,7 +151,7 @@ function insertInTtAddress($address, $mode, $dmCatArr = []) { if (is_array($dmCatArr) && count($dmCatArr)>0) { $count = 0; foreach ($dmCatArr as $uid) { - if (is_numeric(trim($uid))) { + if (is_numeric($uid)) { // set the categories to the mm table of direct_mail $count++; $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_dmail_ttaddress_category_mm'); @@ -169,7 +160,7 @@ function insertInTtAddress($address, $mode, $dmCatArr = []) { ->values([ 'uid_local' => intval($tableUid), 'uid_foreign' => intval($uid), - 'tablenames' => '', // unklar, ob da tt_address stehen sollte + 'tablenames' => '', // unklar 'sorting' => $count ]) ->execute(); @@ -178,46 +169,45 @@ function insertInTtAddress($address, $mode, $dmCatArr = []) { } return $tableUid; } - - /** - * deleteExternalUser: delete user - * @param integer $uid tt_address oder fe_users uid - * @param integer $mode Lösch-Modus: 1: update, 2: löschen - * @param array $dmCatArr direct_mail categories - * @param string $table tt_address or fe_users - */ - function deleteExternalUser($uid, $mode, $dmCatArr = [], $table = 'tt_address') { - $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table); - if ($mode == 2) { - $queryBuilder - ->delete($table) - ->where( - $queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)) - ) - ->execute(); - } else { - $queryBuilder - ->update($table) - ->where( - $queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)) - ) - ->set('deleted', '1') - ->set('tstamp', time()) - ->execute(); - } - if (($table == 'tt_address') && is_array($dmCatArr) && count($dmCatArr)>0) { - // alle Kategorie-Relationen löschen - $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_dmail_ttaddress_category_mm'); - $queryBuilder - ->delete('sys_dmail_ttaddress_category_mm') - ->where( - $queryBuilder->expr()->eq('uid_local', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)) - ) - ->execute(); - } - } - - /** + + /** + * deleteInTTAddress: delete user + * @param integer $uid tt_address uid + * @param integer $mode Lösch-Modus: 1: update, 2: löschen + * @param array $dmCatArr direct_mail categories + */ + function deleteInTtAddress($uid, $mode, $dmCatArr = []) { + $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_address'); + if ($mode == 2) { + $queryBuilder + ->delete('tt_address') + ->where( + $queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)) + ) + ->execute(); + } else { + $queryBuilder + ->update('tt_address') + ->where( + $queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)) + ) + ->set('deleted', '1') + ->set('tstamp', time()) + ->execute(); + } + if (is_array($dmCatArr) && count($dmCatArr)>0) { + // alle Kategorie-Relationen löschen + $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_dmail_ttaddress_category_mm'); + $queryBuilder + ->delete('sys_dmail_ttaddress_category_mm') + ->where( + $queryBuilder->expr()->eq('uid_local', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)) + ) + ->execute(); + } + } + + /** * Find an entry with sys_language_uid > 0 * https://forge.typo3.org/issues/86405 * @@ -227,7 +217,7 @@ function deleteExternalUser($uid, $mode, $dmCatArr = [], $table = 'tt_address') */ public function findAnotherByUid($uid, $sys_language_uid) { $query = $this->createQuery(); - $query->getQuerySettings()->setRespectSysLanguage(false); + $query->getQuerySettings()->setRespectSysLanguage(FALSE); //$query->getQuerySettings()->setSysLanguageUid($sys_language_uid); $query->matching($query->logicalAnd( $query->equals('uid', intval($uid)), diff --git a/Classes/Hooks/PageLayoutViewHook.php b/Classes/Hooks/PageLayoutViewHook.php deleted file mode 100644 index f9c894e..0000000 --- a/Classes/Hooks/PageLayoutViewHook.php +++ /dev/null @@ -1,126 +0,0 @@ - [ - 'table' => 'pages', - 'multiValue' => false, - ], - 'subscribeMessageUid' => [ - 'table' => 'pages', - 'multiValue' => false, - ], - 'subscribeVerifyUid' => [ - 'table' => 'pages', - 'multiValue' => false, - ], - 'subscribeVerifyMessageUid' => [ - 'table' => 'pages', - 'multiValue' => false, - ], - 'unsubscribeUid' => [ - 'table' => 'pages', - 'multiValue' => false, - ], - 'unsubscribeMessageUid' => [ - 'table' => 'pages', - 'multiValue' => false, - ], - 'unsubscribeVerifyUid' => [ - 'table' => 'pages', - 'multiValue' => false, - ], - 'unsubscribeVerifyMessageUid' => [ - 'table' => 'pages', - 'multiValue' => false, - ], - 'resendVerificationUid' => [ - 'table' => 'pages', - 'multiValue' => false, - ], - 'gdprUid' => [ - 'table' => 'pages', - 'multiValue' => false, - ], - ]; - - public function preProcess(PageLayoutView &$parentObject, &$drawItem, &$headerContent, &$itemContent, array &$row) - { - if ($row['list_type'] === 'fpnewsletter_pi1' && $row['CType'] === 'list') { - $row = $this->enrichRow($row); - } - } - - protected function enrichRow(array $row): array - { - $settings = $this->getFlexFormData($row['pi_flexform'] ?? ''); - if ($settings) { - if ($settings['switchableControllerActions']) { - $row['_computed']['displayMode'] = $settings['switchableControllerActions']; - } - } - if ($row['pages']) { - $pagesOut = $this->getRecords('pages', $row['pages']); - $row['_computed']['startingPoint'] = $pagesOut[0] ?: []; - } - foreach ($this->recordMapping as $fieldName => $fieldConfiguration) { - if ($settings['settings'][$fieldName]) { - $records = $this->getRecords($fieldConfiguration['table'], $settings['settings'][$fieldName]); - - if ($fieldConfiguration['multiValue']) { - $row['_computed'][$fieldName] = $records; - } else { - $row['_computed'][$fieldName] = $records[0] ?: []; - } - } - } - $row['_computed']['lll'] = 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_be.xlf:'; - return $row; - } - - protected function getRecords(string $table, string $idList) - { - $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table); - $queryBuilder->getRestrictions()->removeByType(HiddenRestriction::class); - - $rows = $queryBuilder - ->select('*') - ->from($table) - ->where( - $queryBuilder->expr()->in( - 'uid', - $queryBuilder->createNamedParameter(GeneralUtility::intExplode(',', $idList, true), Connection::PARAM_INT_ARRAY) - ) - ) - ->execute() - ->fetchAll(); - - foreach ($rows as &$row) { - $row['_computed']['title'] = BackendUtility::getRecordTitle($table, $row); - } - return $rows; - } - - protected function getFlexFormData(string $flexforms): array - { - $settings = []; - if (!empty($flexforms)) { - $settings = GeneralUtility::makeInstance(FlexFormService::class)->convertFlexFormContentToArray($flexforms); - } - return $settings; - } -} diff --git a/Classes/Utility/HelpersUtility.php b/Classes/Utility/HelpersUtility.php deleted file mode 100644 index 160467f..0000000 --- a/Classes/Utility/HelpersUtility.php +++ /dev/null @@ -1,48 +0,0 @@ -fe_user->getKey('ses', 'mcaptcha1') !== NULL && $GLOBALS['TSFE']->fe_user->getKey('ses', 'mcaptcha2') !== NULL && $GLOBALS['TSFE']->fe_user->getKey('ses', 'mcaptchaop') !== NULL) { - //$result = intval($log->getMathcaptcha()); - $no1 = intval($GLOBALS['TSFE']->fe_user->getKey('ses', 'mcaptcha1')); - $no2 = intval($GLOBALS['TSFE']->fe_user->getKey('ses', 'mcaptcha2')); - $operator = intval($GLOBALS['TSFE']->fe_user->getKey('ses', 'mcaptchaop')); - if ($operator == 1) { - $real_result = $no1 + $no2; - } else { - $real_result = $no1 - $no2; - } - if ($result != $real_result) { - $error = 9; - } else { - $GLOBALS['TSFE']->fe_user->setKey('ses', 'mcaptcha1', NULL); - $GLOBALS['TSFE']->fe_user->setKey('ses', 'mcaptcha2', NULL); - $GLOBALS['TSFE']->fe_user->setKey('ses', 'mcaptchaop', NULL); - } - } else { - $error = 9; - } - return $error; - } -} \ No newline at end of file diff --git a/Classes/Widgets/Provider/LogDataProvider.php b/Classes/Widgets/Provider/LogDataProvider.php deleted file mode 100644 index 0ec1faf..0000000 --- a/Classes/Widgets/Provider/LogDataProvider.php +++ /dev/null @@ -1,73 +0,0 @@ - $this->labels, - 'datasets' => [ - [ - 'label' => 'im Moment kein Chart', - 'backgroundColor' => WidgetApi::getDefaultChartColors()[0], - 'border' => 0, - 'data' => $this->data, - ], - ], - ]; - } - - public function getRecentLogEntries(): array - { - $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_fpnewsletter_domain_model_log'); - return $queryBuilder - ->select('uid','tstamp','email', 'status', 'firstname', 'lastname') - ->from('tx_fpnewsletter_domain_model_log') - ->orderBy('tstamp', 'DESC') - ->setMaxResults(7) - ->execute() - ->fetchAll(); - } - - protected function getLanguageService(): LanguageService - { - return $GLOBALS['LANG']; - } -} \ No newline at end of file diff --git a/Classes/Widgets/Provider/StatusDataProvider.php b/Classes/Widgets/Provider/StatusDataProvider.php deleted file mode 100644 index 6c8dbbd..0000000 --- a/Classes/Widgets/Provider/StatusDataProvider.php +++ /dev/null @@ -1,80 +0,0 @@ -calculateDataForChart(); - return [ - 'labels' => $this->labels, - 'datasets' => [ - [ - 'label' => $this->getLanguageService()->sL('LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_be.xlf:dashboard.widget.fixpunktLogStatus.label'), - 'backgroundColor' => WidgetApi::getDefaultChartColors()[0], - 'border' => 0, - 'data' => $this->data, - ], - ], - ]; - } - - protected function calculateDataForChart(): void - { - $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_fpnewsletter_domain_model_log'); - $entries = $queryBuilder - ->selectLiteral('count(status) AS num') - ->addSelect('status') - ->from('tx_fpnewsletter_domain_model_log') - ->orderBy('status', 'ASC') - ->groupBy('status') - ->execute() - ->fetchAll(); - - foreach ($entries as $entry) { - $this->labels[] = $this->getLanguageService()->sL('LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.'.$entry['status']); - $this->data[] = $entry['num']; - } - } - - protected function getLanguageService(): LanguageService - { - return $GLOBALS['LANG']; - } -} \ No newline at end of file diff --git a/Classes/Widgets/RecentLogEntriesWidget.php b/Classes/Widgets/RecentLogEntriesWidget.php deleted file mode 100644 index a3419d1..0000000 --- a/Classes/Widgets/RecentLogEntriesWidget.php +++ /dev/null @@ -1,61 +0,0 @@ -configuration = $configuration; - $this->view = $view; - $this->dataProvider = $dataProvider; - $this->options = array_merge( - [ - 'showErrors' => true, - 'showWarnings' => false - ], - $options - ); - } - - public function renderWidgetContent(): string - { - $this->view->setTemplate('Widget/RecentLogEntries'); - $this->view->assignMultiple([ - 'configuration' => $this->configuration, - 'logs' => $this->dataProvider->getRecentLogEntries() - ]); - return $this->view->render(); - } -} diff --git a/Configuration/Backend/DashboardWidgetGroups.php b/Configuration/Backend/DashboardWidgetGroups.php deleted file mode 100644 index 2ceac55..0000000 --- a/Configuration/Backend/DashboardWidgetGroups.php +++ /dev/null @@ -1,6 +0,0 @@ - [ - 'title' => 'Fixpunkt', - ], -]; \ No newline at end of file diff --git a/Configuration/FlexForms/flexform_pi1.xml b/Configuration/FlexForms/flexform_pi1.xml index 83e5291..1cdf462 100644 --- a/Configuration/FlexForms/flexform_pi1.xml +++ b/Configuration/FlexForms/flexform_pi1.xml @@ -33,16 +33,12 @@ LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_be.xlf:template.unsubscribeDM - Log->unsubscribeDM;Log->unsubscribe;Log->delete;Log->verifyUnsubscribe + Log->unsubscribeDM;Log->delete;Log->verifyUnsubscribe LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_be.xlf:template.unsubscribeVerify Log->verifyUnsubscribe - - LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_be.xlf:template.resend - Log->resend;Log->verify - LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_be.xlf:template.list Log->list @@ -121,17 +117,6 @@ - - - - - input - 5 - 5 - trim - - - @@ -312,24 +297,6 @@ - - - - - radio - - - LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_be.xlf:settings.no - 0 - - - LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_be.xlf:settings.yes - 1 - - - - - diff --git a/Configuration/Services.php b/Configuration/Services.php deleted file mode 100644 index b4e49f6..0000000 --- a/Configuration/Services.php +++ /dev/null @@ -1,49 +0,0 @@ -hasDefinition(BarChartWidget::class)) { - $services = $configurator->services(); - - $services->set('dashboard.widget.fixpunktRecentLogEntries') - ->class(RecentLogEntriesWidget::class) - ->arg('$view', new Reference('dashboard.views.widget')) - ->arg('$dataProvider', new Reference(\Fixpunkt\FpNewsletter\Widgets\Provider\LogDataProvider::class)) - ->tag( - 'dashboard.widget', - [ - 'identifier' => 'fixpunktRecentLogEntries', - 'groupNames' => 'fixpunkt', - 'title' => 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_be.xlf:dashboard.widget.fixpunktRecentLogEntries.title', - 'description' => 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_be.xlf:dashboard.widget.fixpunktRecentLogEntries.description', - 'iconIdentifier' => 'content-widget-list', - 'height' => 'medium', - 'width' => 'medium' - ] - ); - - $services->set('dashboard.widget.fixpunktLogStatus') - ->class(BarChartWidget::class) - ->arg('$dataProvider', new Reference(\Fixpunkt\FpNewsletter\Widgets\Provider\StatusDataProvider::class)) - ->arg('$view', new Reference('dashboard.views.widget')) - ->tag( - 'dashboard.widget', - [ - 'identifier' => 'fixpunktLogStatus', - 'groupNames' => 'fixpunkt', - 'title' => 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_be.xlf:dashboard.widget.fixpunktLogStatus.title', - 'description' => 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_be.xlf:dashboard.widget.fixpunktLogStatus.description', - 'iconIdentifier' => 'content-widget-chart-bar', - 'height' => 'medium', - 'width' => 'medium' - ] - ); - } -}; \ No newline at end of file diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml deleted file mode 100644 index 3518d29..0000000 --- a/Configuration/Services.yaml +++ /dev/null @@ -1,8 +0,0 @@ -services: - _defaults: - autowire: false - autoconfigure: false - public: false - - Fixpunkt\FpNewsletter\: - resource: '../Classes/*' \ No newline at end of file diff --git a/Configuration/TCA/Overrides/sys_template.php b/Configuration/TCA/Overrides/sys_template.php deleted file mode 100644 index 6986e50..0000000 --- a/Configuration/TCA/Overrides/sys_template.php +++ /dev/null @@ -1,2 +0,0 @@ - \ No newline at end of file diff --git a/Configuration/TCA/tx_fpnewsletter_domain_model_log.php b/Configuration/TCA/tx_fpnewsletter_domain_model_log.php index 81b8b06..7cb8c61 100644 --- a/Configuration/TCA/tx_fpnewsletter_domain_model_log.php +++ b/Configuration/TCA/tx_fpnewsletter_domain_model_log.php @@ -16,6 +16,9 @@ 'searchFields' => 'gender,title,firstname,lastname,email,status,securityhash', 'iconfile' => 'EXT:fp_newsletter/Resources/Public/Icons/tx_fpnewsletter_domain_model_log.gif' ], + 'interface' => [ + 'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, gender, title, firstname, lastname, email, address, zip, city, region, country, phone, mobile, fax, www, position, company, categories, status, securityhash, retoken, mathcaptcha, gdpr', + ], 'types' => [ '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, gender, title, firstname, lastname, email, address, zip, city, region, country, phone, mobile, fax, www, birthday, position, company, categories, status, securityhash, retoken, mathcaptcha, gdpr'], ], @@ -102,7 +105,6 @@ ['LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.gender.mr', 2], ['LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.gender.divers', 3], ], - 'default' => 0, 'size' => 1, 'maxitems' => 1, 'eval' => '' @@ -266,9 +268,7 @@ ['LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.4', 4], ['LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.6', 6], ['LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.7', 7], - ['LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.8', 8], ], - 'default' => 0, 'size' => 1, 'maxitems' => 1, 'eval' => '' diff --git a/Configuration/TypoScript/setup.ts b/Configuration/TypoScript/setup.ts index 1f94c26..07004c2 100644 --- a/Configuration/TypoScript/setup.ts +++ b/Configuration/TypoScript/setup.ts @@ -22,7 +22,7 @@ plugin.tx_fpnewsletter { table = tt_address optionalFields = gender,firstname,lastname optionalFieldsRequired = - doubleOptOut = 0 + doubleOptOut = 1 disableErrorMsg = 0 enableUnsubscribeForm = 0 enableUnsubscribeGdprAsHidden = 0 @@ -34,22 +34,17 @@ plugin.tx_fpnewsletter { unsubscribeMessageUid = unsubscribeVerifyUid = unsubscribeVerifyMessageUid = - resendVerificationUid = gdprUid = 1 daysExpire = 2 - dmUnsubscribeMode = 0 searchPidMode = 0 deleteMode = 1 languageMode = 0 module_sys_dmail_html = 1 module_sys_dmail_category = - password = joh316 reCAPTCHA_site_key = reCAPTCHA_secret_key = mathCAPTCHA = 0 honeypot = 0 - debug = 0 - checkForRequiredExtensions = 1 company = Ihre Firma gender { please = Bitte auswählen @@ -74,9 +69,9 @@ plugin.tx_fpnewsletter { subscribedSubject = Bestätigung Newsletter-Anmeldung unsubscribedSubject = Bestätigung Newsletter-Abmeldung enableConfirmationMails = 0 - dontAppendL = 1 + dontAppendL = 0 } - overrideFlexformSettingsIfEmpty = subscribeUid,subscribeVerifyUid,unsubscribeUid,unsubscribeVerifyUid,gdprUid,parameters.active,parameters.email,module_sys_dmail_category + overrideFlexformSettingsIfEmpty = subscribeUid,subscribeVerifyUid,unsubscribeUid,unsubscribeVerifyUid,gdprUid,parameters.active,parameters.email } } @@ -93,13 +88,4 @@ plugin.tx_fpnewsletter_pi1.settings.email.adminSubscribeSubject = New newsletter plugin.tx_fpnewsletter_pi1.settings.email.adminUnsubscribeSubject = New newsletter-unsubscription plugin.tx_fpnewsletter_pi1.settings.email.subscribedSubject = Newsletter-subscription confirmation plugin.tx_fpnewsletter_pi1.settings.email.unsubscribedSubject = Newsletter-unsubscription confirmation -[END] - -module.tx_dashboard.view { - layoutRootPaths { - 43 = EXT:fp_newsletter/Resources/Private/Layouts/ - } - templateRootPaths { - 43 = EXT:fp_newsletter/Resources/Private/Templates/ - } -} +[END] \ No newline at end of file diff --git a/Documentation/Administrator/Index.rst b/Documentation/Administrator/Index.rst index 26d14bb..57a1824 100644 --- a/Documentation/Administrator/Index.rst +++ b/Documentation/Administrator/Index.rst @@ -24,24 +24,21 @@ You will find 2 folders in the templates-folders: Email and Log. In the Log-fold If a user submits the form, the entries lands in the table tx_fpnewsletter_domain_model_log. Only if a user verifies his email-address, his entry will be copied to the table tt_address. -In the Email-folder you find the templates for the email to use user. Its the email for verifying the email-address. +In the Email-folder you find the templates for the email to use user. Its the email for verifing the email-address. And there are email-templates for the admin: UserToAdmin is sent before verification and SubscribeToAdmin is sent after the email verification. If you want to change the text of the email, copy the templates e.g. to fileadmin and set the new path via TypoScript setup:: plugin.tx_fpnewsletter.view.templateRootPaths.1 = fileadmin/bsdist/theme/tmpl/fp_newsletter/Templates/ -There is a text and a HTML version for email-templates. And there is an (additional) english and a german version of this template (but not for the admin-templates). -From version 3.0.0 the normal templates contains localized texts. -The default template is in german till version 3.0.0. From version 3.0.0 the german templates have the ending 0.html. -E.g. SubscribeVerify1.html contains the english text. You can use this email-templates like this:: +There is a text and a HTML version for email-templates. And there is an english and a german version of this template (but not for the admin-templates). +The default template is in german. SubscribeVerify1.html contains the english text. You can use this email-templates like this:: SubscribeVerify.html and SubscribeVerify.txt -Only for the language 0 you must remove the number until version 3.0.0. For the language 1 SubscribeVerify1.html is used automatically. -This is the behavior when email.dontAppendL = 0. From version 3.0.0 email.dontAppendL is by default 1. +Only for the language 0 you must remove the number. For the language 1 SubscribeVerify1.html is used automatically. You can switch off this behavior with the setting email.dontAppendL = 1! -In this case you can use the variable {sys_language_uid} in the email templates. +In this case you should use the variable {sys_language_uid} in the email templates. You could use to use more than one language in one template. You can use this translate keys in the email templates: @@ -110,20 +107,6 @@ FAQ TYPO3 9 ignores the parameter absolute="1"? Or you have not added a domain in the backend? Add the domain by your own in that case. -- What will be the username if I use fe_users? - - The username will be the email-address. The default password is joh316. The category can be set via - module_sys_dmail_category and is mandatory!!! - -- I use fe_users but nothing happens. - - Have you set the setting module_sys_dmail_category? - -- How can I unsubscribe via luxletter? - - There is a unsubscribe link in the luxletter template. Currently it is not possible to change the status of a - Log entry via luxletter. - - I don´t want/need a log entry. Can I avoid that? Not at all. You can add a task to your scheduler: select the task Scheduler / Table garbage collection. diff --git a/Documentation/ChangeLog/Index.rst b/Documentation/ChangeLog/Index.rst index 056fea8..7ac5e35 100644 --- a/Documentation/ChangeLog/Index.rst +++ b/Documentation/ChangeLog/Index.rst @@ -61,7 +61,7 @@ Version 1.2.0: deprecated methods replaced. Version 2.0.0: with the new setting languageMode you can define the language of the entries. There is now a new behavior when L>0. Furthermore the setting email.dontAppendL is new. -Confirmation emails can now be send by enabling them with the setting email.enableConfirmationMails. +Confirmation emails can now be send by enabeling them with the setting email.enableConfirmationMails. The translate-viewhelper can now be used in the email-templates. Name and salutation can be used now in the email-templates. More FlexForms. @@ -69,37 +69,14 @@ More FlexForms. Version 2.1.0: setting searchPidMode and disableErrorMsg added. extension-key added to composer.json. -Version 2.2.1: more variables/translate keys for emails added. See chapter Administration. -Now for TYPO3 10 and 11. - -Version 2.3.2: a widget for the dashboard added. The extension dashboard is required in TYPO3 11. -Setting checkForRequiredExtensions added (does not work for dashboard in TYPO3 11). -The table fe_users can now be used too. -Form with button added to the verification emails. -no-cache parameter removed. - -Version 2.4.0: Setting dmUnsubscribeMode added. Flexform for "unsubscribe via link" needs to be saved again. -The extension dashboard is no longer required in TYPO3 11. -New action: resend verification email. -French added (thanks to lucmuller). -StopActionException on create when no parameter is there. - -Version 3.0.0: breaking change: default value of email.dontAppendL changed from 0 to 1. -The email-templates without a number as ending uses now translated texts. -If email.dontAppendL=0 even 0 will now be added to the template name. -French emails now possible (thanks to lucmuller). -Bugfix: form replaced with a normal button in the emails. - -Version 3.1.0: salutation in emails moved to a partial. Gender divers will now be ignored in the salutation in emails. -The name is now available in the email to the admin on unsubscription. -A second dashboard widget added: status diagram. -Bugfix: retoken column was too small. - -Version 3.2.0: module_sys_dmail_category now in FlexForms too. -Important: Layout optimized for Bootstrap 4. -IDs in unsubscribe form changed. -Backend: preview added. - -Version 3.2.5: switch from cURL to RequestFactory. -Mathematical captcha check enhanced. -Bugfix #59: no categories added in tt_address \ No newline at end of file +Version 2.1.1: more variables/translate keys for emails added. See chapter Administration. + +Version 2.1.2: + +Security fix: mathematical captcha check enhanced (it was possible to cheat). + +Security fix: settings.doubleOptOut set from 0 to 1. You can set it to 0 if you don´t want a double opt out subscription. + +Security fix: additional check added to the delete-action (it was possible to unsubscribe all users). + +Security fix: Information Disclosure in the new- and unsubscribe-action. \ No newline at end of file diff --git a/Documentation/Configuration/Index.rst b/Documentation/Configuration/Index.rst index ad54252..57e0c62 100644 --- a/Documentation/Configuration/Index.rst +++ b/Documentation/Configuration/Index.rst @@ -30,10 +30,10 @@ Properties for settings ================================= =========== ===================================================================== ================================= Property Data type Description Default ================================= =========== ===================================================================== ================================= -table string tt_address, fe_users or none (empty value) supported tt_address +table string Today only tt_address or none (empty value) supported tt_address optionalFields string Optional fields: see below gender,firstname,lastname optionalFieldsRequired string Optional required* fields: see below -doubleOptOut boolean Enable double out out unsubscription? 0 +doubleOptOut boolean Enable double out out unsubscription? 1 disableErrorMsg boolean Disable some error messages (e.g. already/not subscribed)? 0 enableUnsubscribeForm boolean Enable unsubscribe form at the subscribe page?** 0 enableUnsubscribeGdprAsHidden boolean Do not show the gdpr-checkbox at unsubscribe form? 0 @@ -45,22 +45,17 @@ unsubscribeUid integer Page for the unsubscription unsubscribeMessageUid integer Optional page for the redirect after unsubscription unsubscribeVerifyUid integer Page for the unsubscription-verification unsubscribeVerifyMessageUid integer Optional page for the redirect after unsubscription-verification*** -resendVerificationUid integer Page, where a user can request the verification-email again gdprUid integer Page with the GDPR text 1 daysExpire integer The link expires after X days 2 searchPidMode integer Search in tt_address: 0: only in the 1. folder; 1: in all folders° 0 deleteMode integer 1: set deletion flag; 2: delete entry 1 languageMode integer 0: uses -1 if L>0; 1: uses the sys_language_uid from pages 0 -dmUnsubscribeMode integer 0: direct unsubscription with link from direct_mail; 1: show form. 0 module_sys_dmail_html integer 0: only TEXT; 1: TEXT and HTML; -1: ignore this field in tt_address 1 -module_sys_dmail_category string List of categories (uid) from sys_dmail_category or fe_groups°° -password string Password for the fe_users table. Every user will have the same pw! joh316 +module_sys_dmail_category string Comma separated list of categories (uid) from sys_dmail_category reCAPTCHA_site_key string Website-key for Google reCaptcha v3. curl needed! reCAPTCHA_secret_key string Secret key for Google reCaptcha v3 mathCAPTCHA integer Show a mathematical captcha? 0: no; 1: with 1 digit; 2: with 2 digits 0 honeypot boolean Enable a honeypot against spam? 0 -debug boolean Don´t send email when debug=1 0 -checkForRequiredExtensions boolean Check, if required extensions are installed. 0: no; 1: yes. 1 company string Name of your company Ihre Firma gender.please string Text for gender selection Bitte auswählen gender.mr string Text for the gender mr Herr @@ -79,7 +74,7 @@ email.adminMailBeforeVerification boolean 0: send email to admin after verif email.subscribedSubject string Subject of the confirmation email (subscription) Bestätigung Newsletter-Anmeldung email.unsubscribedSubject string Subject of the confirmation email (unsubscription) Bestätigung Newsletter-Abmeldung email.enableConfirmationMails boolean Send confirmation email to the user after verification? 0: no; 1: yes 0 -email.dontAppendL boolean Append the language UID to a template (when L>0)? 0: yes; 1: no°°° 1 +email.dontAppendL boolean Append the language UID to a template when L>0? 0: yes; 1: no 0 overrideFlexformSettingsIfEmpty string Empty FlexForms should be overwritten by TypoScript all uid settings ================================= =========== ===================================================================== ================================= @@ -91,11 +86,6 @@ Note***: this page is used too, if doubleOptOut=0. unsubscribeMessageUid is not Note°: this works only at the unsubscription. -Note°°: comma separated list. E.g. 1,3. Without space. - -Note°°°: the default value was changed from 0 to 1 in version 3.0.0 and even when L=0 0 will be added from version 3.0.0 -to the email-templates when email.dontAppendL=0. - Property details / examples --------------------------- @@ -103,18 +93,14 @@ Property details / examples Languages ^^^^^^^^^ -You can overwrite the text for other languages like this:: +You can overrite the text for other languges like this:: [siteLanguage("languageId") == "1"] - plugin.tx_fpnewsletter.settings.company = Your company - plugin.tx_fpnewsletter._LOCAL_LANG.en.email.pleaseVerify = Please verify your email-address by clicking here: + plugin.tx_fpnewsletter_pi1.settings.company = Your company [END] -Note: the default language of the email-templates is german if settings.email.dontAppendL=0! You find the english version in the files that end with 1.html. +Note: the default language of the email-templates is german! You find the english version in the files that end with 1.html. You should copy the files and modify the path to the templates via TypoScript. See chapter "Administrator manual". -Otherwise set settings.email.dontAppendL=1. -Note: till version 3.0.0, the default language is german even when settings.email.dontAppendL=1. -From version 3.0.0, the email-templates without a appended number are using translated texts by default. External fields ^^^^^^^^^^^^^^^ @@ -150,8 +136,8 @@ Only email and gdpr are mandatory fields in the model. If you need more mandator There are the following optional fields awailable: gender, title, firstname, lastname, address, zip, city, region, country, phone, mobile, fax, www, position, company. You can make all this fields required. Here an example to enable some of this fields in the subscription form via TypoScript setup:: - plugin.tx_fpnewsletter.settings.optionalFields = gender,title,firstname,lastname,www,position,company - plugin.tx_fpnewsletter.settings.optionalFieldsRequired = firstname,lastname,company + plugin.tx_fpnewsletter_pi1.settings.optionalFields = gender,title,firstname,lastname,www,position,company + plugin.tx_fpnewsletter_pi1.settings.optionalFieldsRequired = firstname,lastname,company Using of categories ^^^^^^^^^^^^^^^^^^^ @@ -159,7 +145,7 @@ Using of categories The table module_sys_dmail_category contains categories for direct_mail. This extension uses that categories instaed of the categories from sys_category. If you use them like this:: - plugin.tx_fpnewsletter.settings.module_sys_dmail_category = 1,3 + plugin.tx_fpnewsletter_pi1.settings.module_sys_dmail_category = 1,3 Then this extension will do the same like the direct_mail_subscription extension. It will make two entires into sys_dmail_ttaddress_category_mm and it will set module_sys_dmail_category in tt_address (after the verification). Do you expect something else? @@ -174,13 +160,4 @@ Like in every extension, you can change the labels via TypoScript. Here 2 exampl plugin.tx_fpnewsletter._LOCAL_LANG.de.tx_fpnewsletter_domain_model_log.email = Email plugin.tx_fpnewsletter._LOCAL_LANG.de.tx_fpnewsletter_domain_model_log.gdpr_desc2 = Ich bin damit einverstanden, dass die von mir angegebenen Daten elektronisch erhoben und gespeichert werden. -You find the designations in the templates used in f:translate key. - -Required extensions -^^^^^^^^^^^^^^^^^^^ - -This extensions checks in the new action (subscription form) if required extensions are installed. -settings.table can be empty, tt_address or fe_users. When tt_address, direct_mail is required too, if you use -settings.module_sys_dmail_html or settings.module_sys_dmail_category. You can disable this check:: - - plugin.tx_fpnewslettersettings.checkForRequiredExtensions = 0 +You find the designations in the templates used in f:translate key. \ No newline at end of file diff --git a/Documentation/Index.rst b/Documentation/Index.rst index 503c950..4a3faef 100644 --- a/Documentation/Index.rst +++ b/Documentation/Index.rst @@ -20,20 +20,23 @@ Newsletter subscriber management |release| :Language: - en, de, it, fr + en, de, it :Description: - Plugin for newsletter subscription and unsubscription. Can be used for the table tt_address or fe_users. A log is written. + Plugin for newsletter subscription and unsubscription. Can be used for the table tt_address. A log is written. :Keywords: newsletter,subscription,unsubscription,verify,gdpr :Copyright: - 2022 + 2021 :Author: Kurt Gusbeth + :Email: + info@quizpalme.de + :License: This document is published under the Open Content License available from http://www.opencontent.org/opl.shtml diff --git a/Documentation/Introduction/Index.rst b/Documentation/Introduction/Index.rst index 4297cd0..d5b373f 100644 --- a/Documentation/Introduction/Index.rst +++ b/Documentation/Introduction/Index.rst @@ -17,18 +17,14 @@ Introduction What does it do? ---------------- -The extension fp_newsletter is designed to provide a newsletter subscription and unsubscription service for the table -tt_address or fe_users which can be used by the extension direct_mail or luxletter. -Furthermore it is designed to be compatible with the GDPR. -A log is written about (every) action in a separate table. +The extension fp_newsletter is designed to provide a newsletter subscription and unsubscription service for the table tt_address which can be used +by the extension direct_mail. Furthermore it is designed to be compatible with the GDPR. A log is written about (every) action in a separate table. Old log entries can be deleted by a scheduler task. Note: there are more TypoScript-settings than FlexForm-settings. -But the extension can be used without tt_address/fe_users too. Therefore an admin-email-address can be specified. +But the extension can be used without tt_address too. Therefore an admin-email-address can be specified. The admin will then get an email with the subscription data. Google reCaptcha v3 or a mathematical captcha can be enabled too. -There is a widget for the dashboard available. -Available languages: english, german/deutsch, french/français and italian/italiano. -The standard language is german, but english texts are also available. +Available languages: english, german/deutsch and italian/italiano. .. _screenshots: diff --git a/Documentation/Localization.de_DE/Administrator/Index.rst b/Documentation/Localization.de_DE/Administrator/Index.rst index 3c9d86e..2c6f383 100644 --- a/Documentation/Localization.de_DE/Administrator/Index.rst +++ b/Documentation/Localization.de_DE/Administrator/Index.rst @@ -23,7 +23,7 @@ Templates Man findet 2 Ordner mit Templates: Email und Log. Im Log-Ordner findet man die Templates für die Formulare. Wenn ein Benutzer solch ein Formular absendet, landen die Daten in der Tabelle tx_fpnewsletter_domain_model_log. -Erst nachdem ein Benutzer seine E-Mail-Adresse verifiziert hat, werden die Daten in die Tabelle tt_address oder fe_users kopiert. +Erst nachdem ein Benutzer seine E-Mail-Adresse verifiziert hat, werden die Daten in die Tabelle tt_address kopiert. Im Email-Ordner findet man die Templates, die per E-Mail verschickt werden. Es gibt Email-Templates für die Verifizierung der E-Mail-Adresse und für den Admin. @@ -32,18 +32,16 @@ Zum ändern der Templates muss man sie z.B. nach fileadmin kopieren und den Link plugin.tx_fpnewsletter.view.templateRootPaths.1 = fileadmin/bsdist/theme/tmpl/fp_newsletter/Templates/ -Es gibt eine Text- und eine HTML-Version für die E-Mails. Und es gibt beide Templates auch in deutsch und in englisch (außer die für den Admin). -Standardmässig musste man bis Version 3.0.0 für jede Sprache neue Templates anlegen. -Das Default-Template enthält übersetzbare Texte ab Version 3.0.0 und bis Version 3.0.0 sind Template ohne Zahlen-Endung in deutsch verfasst und -z.B. SubscribeVerify1.html in englisch verfasst. Ab Version 3.0.0 haben die deutschen Templates die Endung 0.html. -Es werden automatisch diese Templates verwendet, wenn settings.email.dontAppendL=0 ist:: +Es gibt eine Text- und eine HTML-Version für die E-Mails. Und es gibt beide Templates in deutsch und in englisch (außer die für den Admin). +Standardmässig muss man für jede Sprache neue Templates anlegen. Das Default-Template ist in deutsch und SubscribeVerify1.html +ist in englisch verfasst. Es werden automatisch diese Templates verwendet:: SubscribeVerify.html and SubscribeVerify.txt -Für die Sprache 0 muss man die Zahl weglassen bis Version 3.0.0. SubscribeVerify1.txt ist das Template für die Sprache 1. +Nur für die Sprache 0 muss man die Zahl weglassen. SubscribeVerify1.txt ist das Template für die Sprache 1. Man kann dieses Verhalten jedoch mit der Einstellung email.dontAppendL=1 abschalten! -In dem Fall kann man die Variable {sys_language_uid} in den E-Mail-Templates verwenden. +In dem Fall sollte man die Variable {sys_language_uid} in den E-Mail-Templates verwenden. Man kann also mit Hilfe von mehrere Sprachen in einem Template verwenden. Man kann folgende keys in den E-Mail-Templates benutzen: @@ -112,21 +110,9 @@ FAQ TYPO3 9 ignoriert anscheinend den Parameter absolute="1"? Oder du hast keine Domain im Backend angegeben? Füge die Domain dann selber hinzu. -- Was ist der username wenn ich die Tabelle fe_users verwende? - - Als username wird die E-Mail-Adresse verwendet. Das Standard-Passwort ist joh316. Die Kategorie setzt man mittels module_sys_dmail_category. - -- Ich benutzt die fe_users Tabelle, aber es passiert nichts. - - Hast du auch settings.module_sys_dmail_category gesetzt? - -- Wie kann man sich bei luxletter abmelden? - - Im Luxletter-Template ist ein Link drin. Damit kann man jedoch noch nicht den Status eines Log-Eintrags ändern! - - Ich brauche / will keine Log-Einträge. Kann man das ausschalten? Nicht ganz. Man kann nur alte Log-Einträge automatisch löschen lassen. Dazu fügt man einen Task "Tabellen-Müllsammlung" hinzu und wählt da die Tabelle tx_fpnewsletter_domain_model_log aus. - Dann kann man angeben, nach wie vielen Tagen ein Log-Eintrag gelöscht werden soll. + Dann kann man angeben, nach wievielen Tagen ein Log-Eintrag gelöscht werden soll. Wenn der ConJob läuft, werden alte Log-Einträge dann automatisch gelöscht. \ No newline at end of file diff --git a/Documentation/Localization.de_DE/ChangeLog/Index.rst b/Documentation/Localization.de_DE/ChangeLog/Index.rst index 1d31178..f0a66b8 100644 --- a/Documentation/Localization.de_DE/ChangeLog/Index.rst +++ b/Documentation/Localization.de_DE/ChangeLog/Index.rst @@ -20,7 +20,7 @@ Bugfix 2: die Texte-E-Mails wurden bisher überschrieben. Version 0.11.0: Die Links in den E-Mail-Templates funktionieren nun endlich auch mit TYPO3 8. Leere FlexForms werden nun durch die TypoScript-Einstellungen überschrieben. -Version 0.12.0: double opt out wird jetzt auch unterstützt. Mehr FlexForms. +Version 0.12.0: double opt out wird jetzt auch unterstüzt. Mehr FlexForms. Version 0.13.0: italienische Übersetzung hinzugefügt. Erste Version für TYPO3 9 (läuft nur, wenn auch typo3db_legacy installiert ist). @@ -35,7 +35,7 @@ reCaptcha v3 eingebaut (optional). Version 0.16.0: f:format.raw zu Text-Links hinzugefügt. Option module_sys_dmail_category hinzugefügt. -Address-Objekt in Verify-Templates jetzt verfügbar. +Adress-Objekt in Verify-Templates jetzt verfügbar. TS optionalFieldsRequired hinzugefügt. required-Attribut hinzugefügt. Version 0.17.0: neue TypoScript-Einstellung: email.adminMailBeforeVerification @@ -57,7 +57,7 @@ Version 1.0.4: Bugfix: Anmeldung via externem Formular. Version 1.1.0: honeypot hinzugefügt. Bugfix: Fehlermeldung verhindern beim abmelden, wenn ein Captcha aktiviert ist. -Version 1.2.0: veraltete Methoden ersetzt. +Version 1.2.0: veralterte Methoden ersetzt. Version 2.0.0: über die Einstellung languageMode kann man nun die Sprache der Einträge bestimmen. Das Verhalten bei Sprachen>0 ist nun anders. Zudem ist die Einstellung email.dontAppendL neu. @@ -69,38 +69,10 @@ Mehr FlexForms. Version 2.1.0: Einstellung searchPidMode und disableErrorMsg hinzugefügt. extension-key zu composer.json hinzugefügt. -Version 2.2.1: Mehr translate keys für E-Mail-Templates hinzugefügt. Siehe Kapitel Administration. -Jetzt für TYPO3 10 und 11. - -Version 2.3.2: Ein Widget für das Dashboard hinzugefügt. Die Extension Dashboard wird in TYPO3 11 benötigt. -Setting checkForRequiredExtensions hinzugefügt (funktioniert aber nicht für Dashboard in TYPO3 11). -Es kann nun auch die Tabelle fe_users benutzt werden! -Ein Formular mit Button zu den Verifizierung-E-Mails hinzugefügt. -no-cache Parameter entfernt. - -Version 2.4.0: Setting dmUnsubscribeMode hinzugefügt. Flexform für "Abmeldung via Link" muss neu gespeichert werden. -Die Extension Dashboard wird nicht mehr zwingend benötigt in TYPO3 11. -Neues Feature: sende Verifizierungs-E-Mail erneut. -Französisch hinzugefügt (Dank an lucmuller). -StopActionException beim create, wenn kein Parameter vorhanden ist. - -Version 3.0.0: Achtung: Default-Wert von email.dontAppendL von 0 auf 1 geändert. -Die E-mail-Templates ohne Zahlen-Endung enthalten nun übersetzte Texte. -Wenn email.dontAppendL=0 wird nun auch bei L=0 0 and den Template-Namen angehangen. -Französische E-Mails nun möglich (Dank an lucmuller). -Bugfix: Formular durch normalen Button in E-Mails ersetzt. - -Version 3.1.0: Die Anrede in den E-Mails wurde in ein Partial verschoben. -Das Geschlecht divers wird in den E-Mails nicht mehr bei der Anrede berücksichtigt. -Der Name ist nun auch in der E-Mail an den Admin bei der Abmeldung verfügbar. -Neues Dashboard-Widget: Status-Diagramm. -Bugfix: die Spalte retoken war zu klein. - -Version 3.2.0: module_sys_dmail_category ist nun auch per FlexForms einstellbar. -Wichtig: Layout angepasst an Bootstrap 4. -IDs im Abmeldeformular geändert. -Backend: Vorschau hinzugefügt. - -Version 3.2.5: Switch von cURL zu RequestFactory. -Mathematical-captcha-check erweitert. -Bugfix #59: no categories added in tt_address \ No newline at end of file +Version 2.1.1: Mehr translate keys für E-Mail-Templates hinzugefügt. Siehe Kapitel Administration. + +Version 2.1.2: +Security fix: mathematical-captcha-check erweitert (man konnte bisher mogeln). +Security fix: settings.doubleOptOut von 0 auf 1 gesetzt. Kann man auf 0 setzen, wenn man kein double opt out beim abmelden haben will. +Security fix: einen weiteren Check zur Abmelde-Funktion hinzugefügt (man konnte bisher alle Empfänger abmelden). +Security fix: "Information Disclosure" in der new- und unsubscribe-action. \ No newline at end of file diff --git a/Documentation/Localization.de_DE/Configuration/Index.rst b/Documentation/Localization.de_DE/Configuration/Index.rst index c8231e5..09b557c 100644 --- a/Documentation/Localization.de_DE/Configuration/Index.rst +++ b/Documentation/Localization.de_DE/Configuration/Index.rst @@ -31,10 +31,10 @@ Settings-Einstellungen ================================= =========== ===================================================================== ================================ Feld Typ Beschreibung Standard-Wert ================================= =========== ===================================================================== ================================ -table string tt_address, fe_users oder keine Tabelle (leerer Wert) möglich tt_address +table string Bisher nur tt_address oder keine Tabelle (leerer Wert) möglich tt_address optionalFields string Optionale Werte: siehe weiter unten gender,firstname,lastname optionalFieldsRequired string Optionale erforderliche* Werte: siehe weiter unten -doubleOptOut boolean Double opt out Abmeldung einschalten? 0 +doubleOptOut boolean Double opt out Abmeldung einschalten? 1 disableErrorMsg boolean Manche Fehlermeldungen ignorieren (z.B. bereits/nicht angemeldet)? 0 enableUnsubscribeForm boolean Abmeldeformular auf der Anmeldeseite mit ausgeben?** 0 enableUnsubscribeGdprAsHidden boolean DSGVO-Checkbox beim Abmeldeformular verbergen? 0 @@ -46,22 +46,17 @@ unsubscribeUid integer Seite für die Abmeldung unsubscribeMessageUid integer Optionale Seite für den Redirect nach der Abmeldung unsubscribeVerifyUid integer Seite für die Abmelde-Verifikation (demnächst) unsubscribeVerifyMessageUid integer Optionale Seite für den Redirect nach der Abmelde-Verifikation*** -resendVerificationUid integer Seite, auf der man die Verifizierungsemail erneut anfordern kann gdprUid integer Seite mit den DSGVO-Texten 1 daysExpire integer Der Verifikations-Link wird ungültig nach X Tagen 2 searchPidMode integer Suche in tt_address: 0: nur im 1. Ordner; 1: in allen Ordners° 0 deleteMode integer 1: setze delete-Flag; 2: lösche endgültig 1 languageMode integer 0: setzt -1 wenn L>0; 1: benutzte die sys_language_uid von pages 0 -dmUnsubscribeMode integer 0: Sofort-Abmeldung durch Link aus direct_mail; 1: zeige Abmeldeform. 0 module_sys_dmail_html integer 0: nur TEXT; 1: TEXT und HTML; -1: ignoriere dieses Feld 1 -module_sys_dmail_category string Liste von Kategorien (uid) aus sys_dmail_category oder fe_groups°° -password string Passwort für die fe_users Tabelle. Jeder hat das selbe Passwort! joh316 +module_sys_dmail_category string Komma separierte Liste von Kategorien (uid) aus sys_dmail_category reCAPTCHA_site_key string Websiteschlüssel für Google reCaptcha v3. curl wird benötigt! reCAPTCHA_secret_key string Geheimer Schlüssel für Google reCaptcha v3 mathCAPTCHA integer Zeige ein mathematisches Captcha? 0: nein; 1, 2: ja, mit 1-2 Ziffern 0 honeypot boolean Einen Honigtopf (honeypot) gegen Spam einschalten? 0 -debug boolean Sendet keine E-Mails wenn debug=1 0 -checkForRequiredExtensions boolean Prüfen, ob benötigte Extensions installiert sind? 0: nein; 1: ja. 1 company string Name der Firma Ihre Firma gender.please string Text für die Anrede-Auswahl Bitte auswählen gender.mr string Text für Herr Herr @@ -80,22 +75,18 @@ email.adminMailBeforeVerification boolean 0: sende die E-Mail nach der Verif email.subscribedSubject string Betreff der Bestätigungsmail (Anmeldung) Bestätigung Newsletter-Anmeldung email.unsubscribedSubject string Betreff der Bestätigungsmail (Abmeldung) Bestätigung Newsletter-Abmeldung email.enableConfirmationMails boolean Sende eine Bestätigungs-E-Mail an den Benutzer? 0: nein; 1: ja 0 -email.dontAppendL boolean Hänge die Sprach-UID an Templates an (wenn L>0)? 0: ja; 1: nein°°° 1 +email.dontAppendL boolean Hänge die Sprach-UID an Templates an, wenn L>0? 0: ja; 1: nein 0 overrideFlexformSettingsIfEmpty string Leere Flexforms sollen durch TypoScript überschrieben werden alle uid-Variablen ================================= =========== ===================================================================== ================================ Achtung*: die optional erforderlichen Werte werden nur per Browser geprüft. -Achtung**: man braucht eine eigene Seite für die Abmeldung. unsubscribeUid muss also angegebenen werden. +Achtung**: man braucht eine eigene Seite für die Abmeldung. unsubscribeUid muss also angebenen werden. Achtung***: diese Seite wird auch dann benutzt, wenn doubleOptOut=0. unsubscribeMessageUid wird dann nicht benutzt. Achtung°: dies funktioniert nur bei der Abmeldung. -Achtung°°: Kommaseparierte Liste. Beispiel: 1,3. Also ohne Leerzeichen dazwischen. - -Achtung°°°: der Default-Wert wurde von 0 auf 1 geändert in Version 3.0.0 und selbst wenn L=0 wird ab Version 3.0.0 -0 an den E-Mail-Template-Namen angehangen wenn email.dontAppendL=0. Beispiele --------- @@ -106,13 +97,10 @@ Sprachen Man kann die Texte für andere Sprachen so überschreiben:: [siteLanguage("languageId") == "1"] - plugin.tx_fpnewsletter.settings.company = Your company - plugin.tx_fpnewsletter._LOCAL_LANG.de.email.pleaseVerify = Bitte verifiziere deine E-Mail-Adresse durch Klick auf diesen Link: + plugin.tx_fpnewsletter_pi1.settings.company = Your company [END] Achtung: wenn man andere Sprachen in den Emails verwenden will, sollte man das Kapitel "Administrator-Handbuch" lesen. -Bei settings.email.dontAppendL=0 ist die Standardsprache deutsch. Diese Templates enden ab Version 3.0.0 mit 0.html. -Ab Version 3.0.0 werden in den E-Mail-Templates ohne Zahl-Endung übersetzte Texte verwendet. Externe Felder ^^^^^^^^^^^^^^ @@ -149,8 +137,8 @@ erforderlich markieren. Folgende optionalen Felder sind möglich/stehen zur Verf gender, title, firstname, lastname, address, zip, city, region, country, phone, mobile, fax, www, position, company. Man kann alle diese Felder auch als erforderlich markieren. Hier ein Beispiel für das Anmeldeformular via TypoScript Setup:: - plugin.tx_fpnewsletter.settings.optionalFields = gender,title,firstname,lastname,www,position,company - plugin.tx_fpnewsletter.settings.optionalFieldsRequired = firstname,lastname,company + plugin.tx_fpnewsletter_pi1.settings.optionalFields = gender,title,firstname,lastname,www,position,company + plugin.tx_fpnewsletter_pi1.settings.optionalFieldsRequired = firstname,lastname,company Benutzung von Kategorien ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -158,7 +146,7 @@ Benutzung von Kategorien Die Tabelle module_sys_dmail_category enthält Kategorien für direct_mail. Diese Extension benutzt diese Kategorien und nicht die von sys_category. Wenn man sie so benutzt:: - plugin.tx_fpnewsletter.settings.module_sys_dmail_category = 1,3 + plugin.tx_fpnewsletter_pi1.settings.module_sys_dmail_category = 1,3 dann tut diese Extension das selbe wie auch direct_mail_subscription. Sie wird 2 Einträge in sys_dmail_ttaddress_category_mm machen und sie wird module_sys_dmail_category in tt_address setzen (nach der Verifikation). Gibt es diesbezüglich etwa andere Erwartungen? @@ -174,13 +162,4 @@ Wie in jeder Extension auch, kann man die Labels via TypoScript ändern. Hier 2 plugin.tx_fpnewsletter._LOCAL_LANG.de.tx_fpnewsletter_domain_model_log.email = Email plugin.tx_fpnewsletter._LOCAL_LANG.de.tx_fpnewsletter_domain_model_log.gdpr_desc2 = Ich bin damit einverstanden, dass die von mir angegebenen Daten elektronisch erhoben und gespeichert werden. -Man findet die Bezeichnungen in den Templates bei f:translate key. - -Benötigte Extensions -^^^^^^^^^^^^^^^^^^^^ - -Standardmäßig überprüft die Extension in der Action new (Anmeldeformular), ob die benötigten Extensions installiert sind. -settings.table kann leer, tt_address oder fe_users sein. Bei tt_address wird auch direct_mail benötigt, wenn man entweder -settings.module_sys_dmail_html oder settings.module_sys_dmail_category verwendet. Die Überprüfung kann man ausschalten:: - - plugin.tx_fpnewslettersettings.checkForRequiredExtensions = 0 +Man findet die Bezeichnungen in den Templates bei f:translate key. \ No newline at end of file diff --git a/Documentation/Localization.de_DE/Index.rst b/Documentation/Localization.de_DE/Index.rst index 442614c..77d95de 100644 --- a/Documentation/Localization.de_DE/Index.rst +++ b/Documentation/Localization.de_DE/Index.rst @@ -24,17 +24,20 @@ Newsletter-Abonnenten-Management de :Beschreibung: - Plugin für Newsletter An- und Abmeldung. Benutzte Tabelle: tt_address oder fe_users. Ein Log aller Aktionen wird erstellt. + Plugin für Newsletter An- und Abmeldung. Benutzte Tabelle: tt_address. Ein Log aller Aktionen wird erstellt. :Schlüsselwörter: - tt_address,direct_mail,luxletter,newsletter,subscription,unsubscription,dsgvo,gdpr + tt_address,direct_mail,newsletter,subscription,unsubscription,dsgvo,gdpr :Copyright: - 2022 + 2018 :Autor: Kurt Gusbeth + :E-Mail: + k.gusbeth@fixpunkt.com + :Lizenz: Dieses Dokument wird unter der Open Publication License, siehe http://www.opencontent.org/openpub/ veröffentlicht. diff --git a/Documentation/Localization.de_DE/Introduction/Index.rst b/Documentation/Localization.de_DE/Introduction/Index.rst index 5de8218..570f379 100644 --- a/Documentation/Localization.de_DE/Introduction/Index.rst +++ b/Documentation/Localization.de_DE/Introduction/Index.rst @@ -18,19 +18,15 @@ Was macht die Extension? ------------------------ Die Extension fp_newsletter wurde dazu geschrieben, eine datenschutzkonforme An- und Abmeldung zu Newslettern zu ermöglichen. -Unterstützte Tabellen: tt_address und fe_users. So kann z.B. die Extension direct_mail oder luxletter zur Newsletter-Versendung benutzt werden. +Bisher wird dazu nur die Tabelle tt_address benutzt. Die kann z.B. von der Extension direct_mail zur Newsletter-Versendung benutzt werden. Sämtliche Aktionen werden in einer Log-Tabelle festgehalten, damit alle Aktionen der Benutzer überprüft werden können. Allerdings werden manche Einträge auch geändert und nicht immer neu angelegt. So kann man als Admin sehen, wer sich wann an- oder abgemeldet hat. Erst nach einer erfolgreichen Anmeldung werden die Daten in die -tt_address-Tabelle kopiert. Die Extension kann allerdings auch ohne tt_address/fe_users benutzt werden. +tt_address-Tabelle kopiert. Die Extension kann allerdings auch ohne tt_address benutzt werden. Es ist einstellbar, dass ein Admin den Anmeldewunsch per E-Mail bekommt. Dann könnte der Admin die E-Mail-Adresse händisch in einen externen Newsletter eintragen. Bei der Double-Opt-In-Anmeldung und ggf. auch bei der Abmeldung muss man den Datenschutzbestimmungen zustimmen. Google reCaptcha v3 oder ein mathematisches Captcha kann ggf. auch eingebunden werden. -Es gibt auch ein Widget fürs Dashboard. -Verfügbare Sprachen: englisch, deutsch, französisch und italienisch. -Die Standard-Sprache ist deutsch, aber man kann auch andere Sprachen benutzen. - .. _screenshots: diff --git a/Documentation/Localization.de_DE/Settings.cfg b/Documentation/Localization.de_DE/Settings.cfg index e381cf1..5de2560 100644 --- a/Documentation/Localization.de_DE/Settings.cfg +++ b/Documentation/Localization.de_DE/Settings.cfg @@ -19,7 +19,7 @@ project = Newsletter-Abonnenten-Management # ... (recommended) version, displayed next to title (desktop) and in - - + + +
- - Newsletter subscriber management + Newsletter-Abonnenten-Management - - Plugin for newsletter subscription and unsubscription. Used table: tt_address or fe_users. A log is written. - Datenschutzkonformes Plugin für Newsletter-An- und Abmeldungen via tt_address oder fe_users. + + Datenschutzkonformes Plugin für direct_mail An- und Abmeldungen via tt_address. - - Log + Log - - Date - Datum - - - Name - Name - - - Gender + Anrede - - Title + Titel - - Firstname + Vorname - - Lastname + Nachname - - E-Mail + E-Mail - - Address + Adresse - - Zip + PLZ - - City + Ort - - Region + Region - - Country + Land - - Phone + Telefon - - Mobile + Mobil - - Fax + Fax - - WWW + WWW - - Position + Position - - Company + Institution/Organisation - - Categories (comma separated) + Kategorien (Kommagetrennt) - - Status + Status - - Security-hash + Security-Hash - - reCaptcha-token + reCaptcha-token - - Spam protection + Math. Captcha - - enter the result of x + geben Sie bitte das Rechenergebnis von x ein - - GDPR + Datenschutz - - I agree that the operator and publisher may inform me about selected topics. My data is used exclusively for this purpose. In particular, no disclosure to unauthorized third parties. I am aware that I can revoke my consent at any time with effect for the future. The + Ich bin damit einverstanden, dass mich der Betreiber und Herausgeber über ausgewählte Themen informieren darf. Meine Daten werden ausschließlich zu diesem Zweck genutzt. Insbesondere erfolgt keine Weitergabe an unberechtigte Dritte. Mir ist bekannt, dass ich meine Einwilligung jederzeit mit Wirkung für die Zukunft widerrufen kann. Es gilt die - - Privacy Policy + Datenschutzerklärung - - applies, which also includes other information about how to correct, delete and block my data. + , die auch weitere Informationen über Möglichkeiten zur Berichtigung, Löschung und Sperrung meiner Daten beinhaltet. - - Subscribe + Anmelden - - Unsubscribe + Abmelden - - Unsubscribe from the newsletter + Vom Newsletter abmelden - - Resend the verification email - Verifizierungsemail erneut senden - - - Resend the verification email - Verifizierungsemail erneut senden - - - go back + Zurück - - An email has been send to you. Please verify your email-address for the newsletter subscription. + Eine E-Mail mit einem Link zur Verifizierung Ihrer E-Mailadresse wurde Ihnen zugesandt. Erst nach Klick auf den Link in der E-Mail sind Sie zu unserem Newsletter angemeldet! - - An email has been send to you. Please verify your email-address for the newsletter unsubscription. + Eine E-Mail mit einem Link zur Verifizierung Ihrer E-Mailadresse wurde Ihnen zugesandt. Erst nach Klick auf den Link in der E-Mail sind Sie von unserem Newsletter abgemeldet! - - Your email-address is now verified. You are now subscribed to our newsletter with: + Ihre E-Mail-Adresse ist nun verifiziert. Sie sind nun zu unserem Newsletter angemeldet mit: - - Your email-address is now verified. You are now unsubscribed from our newsletter with: + Ihre E-Mail-Adresse ist nun verifiziert. Sie sind nun von unserem Newsletter abgemeldet mit: - - You have unsubscribed our newsletter successfully. + Sie haben sich erfolgreich aus unserem Newsletter ausgetragen. - - An verification email has been resent to: - Eine Bestätigungs-E-Mail wurde erneut gesendet an: - - - Error: no entry for verification found for this email: - Fehler: Für diese E-Mail wurde kein Eintrag zur Verifizierung gefunden: - - - Error: you must first define the setting subscribeVerifyUid (page where to verify the email address). - Fehler: Sie müssen zuerst die Einstellung "subscribeVerifyUid" definieren (Seite, auf der die E-Mail-Adresse überprüft werden soll). - - - Error: wrong parameters in the link. + Fehler - Der Link konnte nicht verarbeitet werden. - - Error: no entry for the given uid found. + Fehler - Es konnte kein passender Eintrag gefunden werden. - - Error: the given hash in the link is wrong. + Fehler - Der Link konnte nicht verarbeitet werden. - - Error: the link is expired! + Fehler - Der Link ist nicht mehr gültig. - - Error: you have verified this email-address already! + Fehler - Der Eintrag wurde bereits verifiziert. - - Error: you are already subscribed to our newsletter! + Fehler - Die E-Mailadresse ist bereits für den Newsletter registriert. - - Error: you are not subscribed, so you can not be unsubscribed! + Fehler - Die E-Mailadresse ist nicht vorhanden. - - Error: missing or wrong parameters for unsubcription! + Fehler - Der Abmelde-Link konnte nicht verarbeitet werden. - - Error: user not found! Maybe you are already unsubscribed. + Fehler - E-Mail nicht vorhanden. Die Abmeldung ist fehlgeschlagen. - - Error: the given email-address is not valid! + Fehler - Die E-Mailadresse ist nicht valide! - - Error: the captcha is not valid! + Fehler - Die Captcha-Prüfung verlief nicht erfolgreich! - - Error: spam detected (honeypot)! + Fehler - Spam erkannt (Honeypot)! - - Error: sql insert error! + Fehler - Der Datensatz konnte nicht eingefügt werden. - - required. + Pflichtfeld. - - Error: please note this messages: + Folgende Fehler sind aufgetreten: - - - you need to enter an valid email-address! + - die E-Mailadresse ist nicht valide! - - - you need to accept the GDPR! + - Sie müssen den Datenschutzbestimmungen zustimmen! - - Error: this point should not be reached! + Fehler: unbekannt! - - Error: the extension tt_address is required if you use settings.table=tt_address! - Fehler: die Extension tt_address wird benötigt, wenn settings.table=tt_address gesetzt ist! - - - Error: the extension direct_mail is required if settings.module_sys_dmail_html!=-1 or settings.module_sys_dmail_category is set! - Fehler: die Extension direct_mail wird benötigt, wenn settings.module_sys_dmail_html=!-1 oder settings.module_sys_dmail_category gesetzt ist! - - - Dear %s %s %s, + Guten Tag %s %s %s, - - Dear %s %s, + Guten Tag %s %s, - - Dear %s, + Guten Tag %s, - - Hello, + Guten Tag, - - %s %s %s + %s %s %s - - %s %s + %s %s - - %s + %s - - Newsletter subscription - Newsletter-Anmeldung - - - you need to click at the verify link to verify your email-address: - um sich zu unserem Newsletter anzumelden, müssen Sie Ihre E-Mail-Adresse mit Klick auf diesen Link verifizieren: - - - Alternatively, you can also click on this button - Alternativ können Sie auch auf diesen Button klicken - - - Best regards - Mit freundlichen Grüßen - - - Newsletter unsubscription - Newsletter-Abmeldung - - - you need to click at the verify link to verify your unsubscription: - um sich von unserem Newsletter abzumelden, müssen Sie Ihre E-Mail-Adresse mit Klick auf diesen Link verifizieren: - - - You have just successfully registered for our newsletter. - Sie haben sich soeben erfolgreich zu unserem Newsletter angemeldet. - - - you are now unsubscribed from our newsletter. - Sie haben sich nun erfolgreich von unserem Newsletter abgemeldet. - - - Used email-address: - Verwendete E-Mail-Adresse: - - - Name: - Name: - - - This user wants to subscribe or to unsubscribe: - dieser User möchte sich gerne an- oder abmelden: - - - This user has just subscribed to the newsletter: - dieser User hat sich gerade zum Newsletter angemeldet: - - - This user has just unsubscribed from the newsletter: - dieser User hat sich gerade vom Newsletter abgemeldet: - diff --git a/Resources/Private/Language/de.locallang_be.xlf b/Resources/Private/Language/de.locallang_be.xlf index 33dcc94..7a733b5 100644 --- a/Resources/Private/Language/de.locallang_be.xlf +++ b/Resources/Private/Language/de.locallang_be.xlf @@ -1,16 +1,12 @@ - +
Newsletter-subscriber-settings Newsletter-Abonnenten-Einstellungen - - Startingpoint - Datensatzsammlung - HTML-template: HTML-Template: @@ -43,10 +39,6 @@ Newsletter: verify unsubscription Newsletter: Abmeldung verifizieren - - Newsletter: resend verification email - Newsletter: Verifizierungsemail erneut anfordern - List view: all actions Liste: alle Aktionen @@ -120,8 +112,8 @@ Einen Honigtopf (honeypot) gegen Spam einschalten? - Search address (in tt_address/fe_users) in all specified folders? - Suche eine Adresse (in tt_address/fe_users) in allen angegebenen Ordnern? + Search address in tt_address in all specified folders? + Suche eine Adresse in tt_address in allen angegebenen Ordnern? Hard or soft delete mode? @@ -152,21 +144,13 @@ Bestätigungs-E-Mails einschalten? - Add language UID to email templates? + Aggiungere l'UID della lingua ai modelli di posta elettronica? Hänge die Sprach-UID an die E-Mail-Templates an? - - Direct mail unsubscribe mode: direct unsubscribe (no) or go to the unsubscribe page (yes)? - Direct mail Abmelde-Modus: Sofort-Abmeldung (nein) oder erst auf die Abmeldeseite weiterleiten (ja)? - Subscribe to a HTML-newsletter? Newsletter im HTML-Format abonnieren? - - UIDs of the direct-mail-categories (direct-mail) OR fe_groups (luxletter), e.g. 3,4 - UIDs von direct-mail-Kategorien (direct-mail) oder fe_groups (luxletter), Z.B. 3,4 - External parameters Externe Parameter @@ -179,26 +163,6 @@ Input-field name for the email-address (e.g. tx_myshop_pi1|newBestellung|email) Feld-Name für die E-Mail-Adresse (z.B. tx_myshop_pi1|newBestellung|email) - - fp_newsletter: recent 7 log entries - fp_newsletter: die letzten 7 Einträge - - - Shows date, name, email and status of the last entries - Zeigt Datum, Name, E-mail und Status der letzten Log-Einträge - - - fp_newsletter: status diagram - fp_newsletter: Status-Diagramm - - - Shows how often a status occurs - Zeigt, wie oft ein Status vorkommt - - - Status code, count - Anzahl - diff --git a/Resources/Private/Language/de.locallang_csh_tx_fpnewsletter_domain_model_log.xlf b/Resources/Private/Language/de.locallang_csh_tx_fpnewsletter_domain_model_log.xlf index 7376f52..a7e2a40 100644 --- a/Resources/Private/Language/de.locallang_csh_tx_fpnewsletter_domain_model_log.xlf +++ b/Resources/Private/Language/de.locallang_csh_tx_fpnewsletter_domain_model_log.xlf @@ -7,7 +7,7 @@ Newsletter-Abonnenten-Management - Datenschutzkonformes Plugin für Newsletter-An- und Abmeldungen via tt_address oder fe_users. + Datenschutzkonformes Plugin für direct_mail An- und Abmeldungen via tt_address. Anrede diff --git a/Resources/Private/Language/de.locallang_db.xlf b/Resources/Private/Language/de.locallang_db.xlf index cfe93f3..deb9ce7 100644 --- a/Resources/Private/Language/de.locallang_db.xlf +++ b/Resources/Private/Language/de.locallang_db.xlf @@ -1,172 +1,128 @@ - - - + + +
- - Newsletter subscriber management + Newsletter-Abonnenten-Management - - Privacy compliant plugin for newsletter subscription and unsubscription (for direct_mail via tt_address/luxletter via fe_users). - Datenschutzkonformes Plugin für NL-An- und Abmeldungen via tt_address oder fe_users. + + Datenschutzkonformes Plugin für direct_mail An- und Abmeldungen via tt_address. - - Log + Log - - Language + Sprache - - all languages + alle Sprachen - - Parent + Ursprung - - Hidden? + Verbergen? - - Time stamp + Datum und Zeit - - Gender + Anrede - - Title + Titel - - Firstname + Vorname - - Lastname + Nachname - - E-Mail + E-Mail - - Address + Adresse - - Zip + PLZ - - City + Ort - - Region + Region - - Country + Land - - Phone + Telefon - - Mobile + Mobil - - Fax + Fax - - WWW + WWW - - Position + Position - - Company + Institution/Organisation - - Categories (comma separated) + Kategorien (Kommagetrennt) - - Status + Status - - Security-hash + Security-hash - - reCaptcha-token + reCaptcha-token - - Mathematical captcha + Math. Captcha - - GDPR + DSGVO - - Mrs. + Frau - - Mr. + Herr - - Divers + Divers - - unknown + unbekannt - - subscribed, waiting for verify + angemeldet, warte auf Bestätigung - - subscribed, verified + angemeldet, bestätigt - - unsubscribed, waiting for verify + abgemeldet, warte auf Bestätigung - - unsubscribed, verified + abgemeldet, bestätigt - - already subscribed + schon angemeldet - - unsubscribed + abgemeldet - - Email not found - die E-Mail-Adresse wurde nicht gefunden - diff --git a/Resources/Private/Language/fr.locallang.xlf b/Resources/Private/Language/fr.locallang.xlf deleted file mode 100644 index 39e9424..0000000 --- a/Resources/Private/Language/fr.locallang.xlf +++ /dev/null @@ -1,348 +0,0 @@ - - - -
- - - Newsletter subscriber management - Gestion des inscriptions aux infolettres - - - Plugin for newsletter subscription and unsubscription. Used table: tt_address or fe_users. A log is written. - Plugin d'inscription et désinscription aux infolettres. Utilise les tables: tt_address ou fe_users. Un journal est écrit. - - - Log - Journal - - - Date - Date - - - Name - Nom - - - Gender - Genre - - - Title - Titre - - - Firstname - Prénom - - - Lastname - Nom - - - E-Mail - Courriel - - - Address - Adresse - - - Zip - Code postal - - - City - Ville - - - Region - Région - - - Country - Pays - - - Phone - Téléphone - - - Mobile - Mobile - - - Fax - Fax - - - WWW - WWW - - - Position - Fonction - - - Company - Société - - - Categories (comma separated) - Catégories (séparées par des virgules ',') - - - Status - Statut - - - Security-hash - Hash de sécurité - - - reCaptcha-token - Token reCaptcha - - - Spam protection - Protection anti-spam - - - enter the result of x - Renseignez le résultat de x - - - GDPR - RGPD - - - I agree that the operator and publisher may inform me about selected topics. My data is used exclusively for this purpose. In particular, no disclosure to unauthorized third parties. I am aware that I can revoke my consent at any time with effect for the future. The - J'accepte que l'opérateur et l'éditeur puissent m'informer sur les sujets sélectionnés. Mes données sont utilisées exclusivement à cette fin. En particulier, aucune divulgation à des tiers non autorisés. Je suis conscient que je peux révoquer mon consentement à tout moment. la - - - Privacy Policy - Politique de confidentialité - - - applies, which also includes other information about how to correct, delete and block my data. - s'applique, celle-ci comprend également d'autres informations sur la façon de corriger, supprimer et bloquer mes données. - - - Subscribe - Inscription - - - Unsubscribe - Désinscription - - - Unsubscribe from the newsletter - Se désinscrire des infoslettres - - - Resend the verification email - Renvoyer l'e-mail de vérification - - - Resend the verification email - Renvoyer l'e-mail de vérification - - - go back - retour - - - An email has been send to you. Please verify your email-address for the newsletter subscription. - Un courriel vous a été envoyé. Veuillez vérifier votre courriel pour confirmer votre inscription. - - - An email has been send to you. Please verify your email-address for the newsletter unsubscription. - Un email vous a été envoyé. Veuillez vérifier votre adresse e-mail pour la désinscription à la newsletter. - - - Your email-address is now verified. You are now subscribed to our newsletter with: - Merci de votre confirmation. Vous êtes à présent inscrit avec l'adresse : - - - Your email-address is now verified. You are now unsubscribed from our newsletter with: - Merci de votre confirmation. Nous avons supprimé l'adresse email suivante : - - - You have unsubscribed our newsletter successfully. - Vous vous êtes désinscrit de notre infolettre avec succès. - - - An verification email has been resent to: - Un e-mail de vérification a été renvoyé à : - - - Error: no entry for verification found for this email: - Erreur : aucune entrée de vérification trouvée pour cet e-mail : - - - Error: you must first define the setting subscribeVerifyUid (page where to verify the email address). - Erreur : vous devez d'abord définir le paramètre subscribeVerifyUid (page où vérifier l'adresse e-mail). - - - Error: wrong parameters in the link. - Erreur: mauvais paramètres dans le lien. - - - Error: no entry for the given uid found. - Erreur: Aucune entrée pour l'uid fourni. - - - Error: the given hash in the link is wrong. - Erreur: Le hash de sécurité du lien est invalide. - - - Error: the link is expired! - Erreur: Le lien est expiré! - - - Error: you have verified this email-address already! - Erreur: Cette adresse courriel a déjà été validée! - - - Error: you are already subscribed to our newsletter! - Erreur : vous êtes déjà inscrit à notre infolettre! - - - Error: you are not subscribed, so you can not be unsubscribed! - Erreur: Vous n'êtes pas inscrit, Vous ne pouvez pas vous désinscrire! - - - Error: missing or wrong parameters for unsubcription! - Erreur: paramètres érronés ou manquants pour la désinscription! - - - Error: user not found! Maybe you are already unsubscribed. - Erreur: utilisateur non trouvé! Peut-être être vous déjà désinscrit. - - - Error: the given email-address is not valid! - Erreur: L'adresse courriel n'est pas valide! - - - Error: the captcha is not valid! - Erreur: Le cryptogramme de sécurité n'est pas valide! - - - Error: spam detected (honeypot)! - Erreur: spam détecté (honeypot)! - - - Error: sql insert error! - Erreur: erreur lors de l'insertion en base de donnée ! - - - required. - oblibatoire. - - - Error: please note this messages: - Erreur: Veuillez notez ces messages: - - - - you need to enter an valid email-address! - - Veuillez renseigner une adresse courriel valide! - - - - you need to accept the GDPR! - - Vous devez acceptez la close RGPD! - - - Error: this point should not be reached! - Erreur: Vous n'auriez pas du arriver là! - - - Error: the extension tt_address is required if you use settings.table=tt_address! - Erreur: l'extension tt_address est requise si vous utilisez le paramètre. table=tt_address! - - - Error: the extension direct_mail is required if settings.module_sys_dmail_html!=-1 or settings.module_sys_dmail_category is set! - Erreur : l'extension direct_mail est requise si settings.module_sys_dmail_html!=-1 ou settings.module_sys_dmail_category est défini ! - - - Dear %s %s %s, - Cher %s %s %s, - - - Dear %s %s, - Cher %s %s, - - - Dear %s, - Cher %s, - - - Hello, - Bonjour, - - - %s %s %s - %s %s %s - - - %s %s - %s %s - - - %s - %s - - - Newsletter subscription - Inscription à l'infolettre - - - you need to click on the verify link to verify your email-address: - Cliquez sur le lien suivant pour confirmer votre adresse courriel - - - Alternatively, you can also click on this button - Vous pouvez aussi cliquez sur ce bouton - - - Best regards - Cordialement - - - Newsletter unsubscription - Désinscription de l'infolettre - - - you need to click at the verify link to verify your unsubscription: - Cliquez sur le lien suivant pour confirmer votre désinscription - - - You have just successfully registered for our newsletter. - Vous êtes maintenant inscrit à notre infolettre - - - you are now unsubscribed from our newsletter. - Vous êtes à présent désinscrit de notre infolettre - - - Used email-address: - Courriel utilisé: - - - Name: - Nom: - - - this user wants to subscribe or to unsubscribe: - Cet utilisateur souhaite s'inscrire ou se désinscrire - - - this user has just subscribed to the newsletter: - Cet utilisateur vient de s'inscrire à l'infolettre - - - this user has just unsubscribed from the newsletter: - Cet utilisateur vient de se désinscrire de l'infolettre - - - - diff --git a/Resources/Private/Language/fr.locallang_be.xlf b/Resources/Private/Language/fr.locallang_be.xlf deleted file mode 100644 index ed1d935..0000000 --- a/Resources/Private/Language/fr.locallang_be.xlf +++ /dev/null @@ -1,204 +0,0 @@ - - - -
- - - Newsletter-subscriber-settings - Paramètre de l'inscription à l'infolettre - - - Startingpoint - Point de départ - - - HTML-template: - Template HTML: - - - no template layout selected! - Aucune template sélectionnée! - - - Newsletter: subscribe (and unsubscribe) - Infolettre: inscription (et désinscription) - - - Newsletter: subscribe via external extension - Infolettre: inscription via une extension tierce - - - Newsletter: verify subscription - Infolettre: Validation de l'inscription - - - Newsletter: unsubscribe via form - Infolettre: Formulaire de désinscription - - - Newsletter: unsubscribe via link - Infolettre: Désinscription via un lien - - - Newsletter: verify unsubscription - Infolettre: Validation de la désinscription - - - Newsletter: resend verification email - Infolettre: renvoyer l'e-mail de vérification - - - List view: all actions - Liste: Toutes les actions - - - Page for the subscription - Page d'inscription - - - Page to verify email-address for subscription - Page de validation de l'adresse courriel - - - Page for the unsubscription - Page de désinscription - - - Page to verify email-address for unsubscription - Page de validation de l'adresse courriel pour la désinscription - - - Page with the GDPR - Page contenant les closes RGPD - - - Enable/disable - Activé/désactivé - - - no - non - - - yes - oui - - - yes, with 1 digit - Oui, avec 1 chiffre - - - yes, with 1-2 digits - Oui avec 1 ou 2 chiffres - - - ignore this field - Ignorer ce champ - - - Enable double opt out unsubscription? - Activer la double confirmation pour la désinscription ? - - - Disable some error messages (e.g. already/not subscribed)? - Désactiver certains messages d'erreur (ex. déjà/pas encore inscrit)? - - - Enable unsubscription form under the subscription form too? - Afficher le formulaire de désinscription sous le formulaire d'inscription ? - - - Set the GDPR-checkbox to hidden on the unsubscription form? - Masquer la case RGPD dans le formulaire de désinscription ? - - - Show a mathematical captcha? - Afficher un filtre anti-spam basé sur un calcul mathématique ? - - - Enable a honeypot? - Activer le honeypot ? - - - Search address (in tt_address/fe_users) in all specified folders? - Recherche l'adresse courriel (tt_address/fe_users) dans tous les dossiers spécifiés ? - - - Hard or soft delete mode? - Suppression physique ou logique ? - - - set deletion flag - Utilisation du champs deleted (Suppression logique) - - - delete entry - Suppression physique - - - Language mode - Mode de localisation - - - set sys_language_uid to -1 if L>0 - définir sys_language_uid à -1 lorsque L>0 - - - use the value of sys_language_uid - utiliser la valeur de sys_language_uid - - - Enable confirmation emails to the user? - Activer les emails de confirmations pour l'utilisateur ? - - - Add language UID to email templates? - Ajouter l'UID de la langue aux templates d'email ? - - - Direct mail unsubscribe mode: direct unsubscribe (no) or go to the unsubscribe page (yes)? - Mode de désinscription pour Direct mail : Désinscription direct OU aller à la page de désinscription ? - - - Subscribe to a HTML-newsletter? - Recevoir les infolettres au format HTML ? - - - UIDs of the direct-mail-categories (direct-mail) OR fe_groups (luxletter), e.g. 3,4 - UID de module_sys_dmail_category (direct-mail) OU fe_groups (luxletter) - - - External parameters - Paramètres externes - - - Checkbox name for the newsletter-subscription (e.g. tx_myshop_pi1|newBestellung|newsletter) - Attribut name de la case à coche du formulaire d'inscription (ex. tx_myshop_pi1|newBestellung|newsletter) - - - Input-field name for the email-address (e.g. tx_myshop_pi1|newBestellung|email) - Attribut name du champs de l'adresse courriel (ex. tx_myshop_pi1|newBestellung|email) - - - fp_newsletter: recent 7 log entries - fp_newsletter: 7 Dernières entrées du journal - - - Shows date, name, email and status of the last entries - Afficher les date, nom, courriel et statut des dernières entrées - - - fp_newsletter: status diagram - fp_newsletter: diagramme d'état - - - Shows how often a status occurs - Affiche la fréquence à laquelle un état se produit - - - Status code, count - Number - - - - diff --git a/Resources/Private/Language/fr.locallang_csh_tx_fpnewsletter_domain_model_log.xlf b/Resources/Private/Language/fr.locallang_csh_tx_fpnewsletter_domain_model_log.xlf deleted file mode 100644 index f068ab4..0000000 --- a/Resources/Private/Language/fr.locallang_csh_tx_fpnewsletter_domain_model_log.xlf +++ /dev/null @@ -1,80 +0,0 @@ - - - -
- - - Gestion des inscriptions aux infolettres - - - Plugin d'inscription et désinscription aux infolettres. Utilise les tables: tt_address ou fe_users. Un journal est écrit. - - - Genre - - - Titre - - - Prénom - - - Nom - - - Courriel - - - Adresse - - - Code postal - - - Ville - - - Region - - - Pays - - - Téléphone - - - Mobile - - - Fax - - - WWW - - - Fonction - - - Société - - - Catégories (séparées par des virgules ',') - - - Statut - - - Hash de sécurité - - - Token reCaptcha - - - Protection anti-spam mathématique - - - Case à cocher RGPD - - - - diff --git a/Resources/Private/Language/fr.locallang_db.xlf b/Resources/Private/Language/fr.locallang_db.xlf deleted file mode 100644 index 7ae609f..0000000 --- a/Resources/Private/Language/fr.locallang_db.xlf +++ /dev/null @@ -1,172 +0,0 @@ - - - -
- - - Newsletter subscriber management - Gestion des inscriptions aux infolettres - - - Privacy compliant plugin for newsletter subscription and unsubscription (for direct_mail via tt_address/luxletter via fe_users). - Plugin respectant la confidentialité pour l'abonnement et le désabonnement aux newsletter (pour direct_mail via tt_address/luxletter via fe_users) . - - - Log - Journal - - - Language - Langue - - - all languages - Toutes les langues - - - Parent - Langue parente - - - Hidden? - Caché ? - - - Time stamp - Horodatage - - - Gender - Genre - - - Title - Titre - - - Firstname - Prénom - - - Lastname - Nom - - - E-Mail - Courriel - - - Address - Adresse - - - Zip - Code postal - - - City - Ville - - - Region - Région - - - Country - Pays - - - Phone - Téléphone - - - Mobile - Mobile - - - Fax - Fax - - - WWW - WWW - - - Position - Fonction - - - Company - Société - - - Categories (comma separated) - Catégories (séparées par des virgules ',') - - - Status - Statut - - - Security-hash - Hash de sécurité - - - reCaptcha-token - Token reCaptcha - - - Mathematical captcha - Protection anti-spam mathématique - - - GDPR - RGPD - - - Mrs. - Mme. - - - Mr. - M. - - - Divers - Divers - - - unknown - inconnu - - - subscribed, waiting for verify - inscrit, en attente de confirmation - - - subscribed, verified - inscrit, confirmé - - - unsubscribed, waiting for verify - désinscrit, en attente de confirmation - - - unsubscribed, verified - désinscrit, confirmé - - - already subscribed - déjà inscrit - - - unsubscribed - désinscrit - - - Email not found - Email non trouvé - - - - diff --git a/Resources/Private/Language/it.locallang.xlf b/Resources/Private/Language/it.locallang.xlf index 21ab637..d178052 100644 --- a/Resources/Private/Language/it.locallang.xlf +++ b/Resources/Private/Language/it.locallang.xlf @@ -1,294 +1,235 @@ - - - + + +
- - Newsletter subscriber management + + Newsletter management Gestione Newsletter - - Plugin for newsletter subscription and unsubscription. Used table: tt_address or fe_users. A log is written. + + Plugin for newsletter subscribtion and unsubscribtion Pagina per l'iscrizione e la revoca - + Log Log - - Date - Dato - - - Name - Nome - - + Gender Sesso - + Title Titolo - + Firstname Nome - + Lastname Cognome - + E-Mail E-mail - - Address + Adresse - - Zip + PLZ - - City + Ort - - Region + Region - - Country + Land - - Phone + Telefon - - Mobile + Mobil - - Fax + Fax - - WWW + WWW - - Position + Position - - Company + Institution/Organisation - - Categories (comma separated) + Kategorien (Kommagetrennt) - + Status Status - + Security-hash Security-hash - + reCaptcha-token reCaptcha-token - - Spam protection + + Mathematical captcha Captcha matematico - - enter the result of x + + Enter the result of x inserisci il risultato del calcolo di x - + GDPR GDPR - - I agree that the operator and publisher may inform me about selected topics. My data is used exclusively for this purpose. In particular, no disclosure to unauthorized third parties. I am aware that I can revoke my consent at any time with effect for the future. The + + SI I agree that the operator and publisher may inform me about selected topics. My data is used exclusively for this purpose. In particular, no disclosure to unauthorized third parties. I am aware that I can revoke my consent at any time with effect for the future. The Sono a conoscenza che l'operatore e il pubblicatore mi devono informare circa i dati trasmessi. I miei dati saranno utilizzati esclusivamente per il servizio al quale sono iscritto. In particolare non possono essere ceduti o usati da terze parti. Sono a conoscenza del fatto che io pesso revocare il consenso all'uso dei dati in qualsiasi momento con effetto immediato nel futuro. La - + Privacy Policy Privacy Policy - + applies, which also includes other information about how to correct, delete and block my data. sarà applicata; prevede anche le informazioni per la gestione dei dati: modifica, cancellazione e blocco dei miei dati. - + Subscribe Iscrizione - + Unsubscribe Revoca - + Unsubscribe from the newsletter Revoca dell'iscrizione dalla newsletter - - Resend the verification email - Invia nuovamente l'e-mail di verifica - - - Resend the verification email - Invia nuovamente l'e-mail di verifica - - + go back torna indietro - + An email has been send to you. Please verify your email-address for the newsletter subscription. Entro qualche minuto riceverai un email. Controlla il tuo indirizzo email per verificare l'iscrizione. - + An email has been send to you. Please verify your email-address for the newsletter unsubscription. Ti è stato inviato un email. Controlla il tuo indirizzo email per verificare l'avvenuta revoca. - - Your email-address is now verified. You are now subscribed to our newsletter with: + + Your email-address is now verfied. You are now subscribed to our newsletter. Il tuo indirizzo email è stato ora verificato. Sei iscritto alla newsletter con: - - Your email-address is now verified. You are now unsubscribed from our newsletter with: - Il tuo indirizzo email è ora verificato. Ora sei cancellato dalla nostra newsletter con: - - + You have unsubscribed our newsletter successfully. La tua iscrizione alla newsletter è stata revocata con successo: - - An verification email has been resent to: - È stata inviata un'e-mail di verifica a: - - - Error: no entry for verification found for this email: - Errore: nessuna voce per la verifica trovata per questa email: - - - Error: you must first define the setting subscribeVerifyUid (page where to verify the email address). - Errore: è necessario prima definire l'impostazione subscribeVerifyUid (pagina dove verificare l'indirizzo email). - - + Error: wrong parameters in the link. Errore: link con parametri sbagliati. - + Error: no entry for the given uid found. Errore: nessuna entry esiste per la uid trovata - + Error: the given hash in the link is wrong. Errore: l'hash del link è sbagliato - + Error: the link is expired! Errore: il link è scaduto! - + Error: you have verified this email-address already! Errore: il tuo indirizzo email è stato già verificato! - + Error: you are already subscribed to our newsletter! Errore: sei già iscritto alla newsletter! - + Error: you are not subscribed, so you can not be unsubscribed! Errore: non sei iscritto, così non puoi revocare l'iscrizione! - + Error: missing or wrong parameters for unsubcription! Errore: parametri mancanti o sbagliati per la revoca! - + Error: user not found! Maybe you are already unsubscribed. Errore: utente non trovato. Forse hai già revocato l'iscrizione - + Error: the given email-address is not valid! Errore: l'indirizzo email fornito non è valido! - - Error: the captcha is not valid! + + Error: the given captcha is not valid! Errore: l'indirizzo captcha non è valido! - + Error: spam detected (honeypot)! Errore: spam detected (honeypot)! - + Error: sql insert error! Errore di inserimento nel database! - + required. obbligatorio - + Error: please note this messages: Errore: nota questi messaggi: - + - you need to enter an valid email-address! - devi inserire un email valido - + - you need to accept the GDPR! - devi accettare le condizioni GDPR - + Error: this point should not be reached! Errore generico - - Error: the extension tt_address is required if you use settings.table=tt_address! - Errore: l'estensione tt_address è richiesta se si utilizza settings.table=tt_address! - - - Error: the extension direct_mail is required if settings.module_sys_dmail_html!=-1 or settings.module_sys_dmail_category is set! - Errore: l'estensione direct_mail è richiesta se è impostato settings.module_sys_dmail_html!=-1 o settings.module_sys_dmail_category! - - - Dear %s %s %s, + Cara %s %s %s, - - Dear %s %s, + Cara %s %s, - - Dear %s, + Cara %s, - - Hello, + Ciao, - - %s %s %s + %s %s %s - - %s %s + %s %s - - %s + %s diff --git a/Resources/Private/Language/it.locallang_be.xlf b/Resources/Private/Language/it.locallang_be.xlf index 21f6053..7ff66b0 100644 --- a/Resources/Private/Language/it.locallang_be.xlf +++ b/Resources/Private/Language/it.locallang_be.xlf @@ -1,16 +1,12 @@ - +
Newsletter-subscriber-settings Settings per la newsletter - - Startingpoint - Punto di partenza - HTML-template: Modello HTML: @@ -43,10 +39,6 @@ Newsletter: verify unsubscription Newsletter: verifica la revoca della iscrizione - - Newsletter: resend verification email - Newsletter: invia nuovamente l'e-mail di verifica - List view: all actions Vista modalità Lista: tutte le azioni @@ -120,8 +112,8 @@ Mostra un honeypot? - Search address (in tt_address/fe_users) in all specified folders? - Cerca indirizzo in tt_address/fe_users in tutte le cartelle specificate? + Search address in tt_address in all specified folders? + Cerca indirizzo in tt_address in tutte le cartelle specificate? Hard or soft delete mode? @@ -152,21 +144,13 @@ Abilitare le email di conferma all'utente? - Add language UID to email templates? - Aggiungere l'UID della lingua ai modelli di posta elettronica? - - - Direct mail unsubscribe mode: direct unsubscribe (no) or go to the unsubscribe page (yes)? - Direct mail modalità di annullamento dell'iscrizione: disiscrizione diretta (no) o vai alla pagina di annullamento dell'iscrizione (si)? + Aggiungere l'UID della lingua ai modelli di posta elettronica? + Abilitare le email di conferma all'utente? Subscribe to a HTML-newsletter? Iscrizione alla newsletter in formato HTML? - - UIDs of the direct-mail-categories (direct-mail) OR fe_groups (luxletter), e.g. 3,4 - UID di module_sys_dmail_category (direct-mail) O fe_groups (luxletter) - External parameters Parametri esterni @@ -179,26 +163,6 @@ Input-field name for the email-address (e.g. tx_myshop_pi1|newBestellung|email) Nome del campo di input per l'indirizzo e-mail (p.e. tx_myshop_pi1|newBestellung|email) - - fp_newsletter: recent 7 log entries - fp_newsletter: 7 voci di registro recenti - - - Shows date, name, email and status of the last entries - Mostra la data, il nome, l'e-mail e lo stato delle ultime voci - - - fp_newsletter: status diagram - fp_newsletter: grafico di stato - - - Shows how often a status occurs - Mostra la frequenza con cui si verifica uno stato - - - Status code, count - Numero - diff --git a/Resources/Private/Language/it.locallang_db.xlf b/Resources/Private/Language/it.locallang_db.xlf index 2f52b0b..eb5c04a 100644 --- a/Resources/Private/Language/it.locallang_db.xlf +++ b/Resources/Private/Language/it.locallang_db.xlf @@ -1,172 +1,155 @@ - - - + + +
- + Newsletter subscriber management Gestione della iscrizione alla newsletter - - Privacy compliant plugin for newsletter subscription and unsubscription (for direct_mail via tt_address/luxletter via fe_users). + + Privacy Compliant Plugin for newsletter subscribtion and unsubscribtion (for direct_mail). Plugin per l'iscrizione e revoca alla newsletter gestita da direct_mail - + Log Log - + Language linguaggio - + all languages tutte le lingue - + Parent Genitore - + Hidden? Nascosta? - + Time stamp Data e ora - + Gender Sesso - + Title Titolo - + Firstname Nome - + Lastname Cognome - + E-Mail E-mail - - Address + Adresse - - Zip + PLZ - - City + Ort - - Region + Region - - Country + Land - - Phone + Telefon - - Mobile + Mobil - - Fax + Fax - - WWW + WWW - - Position + Position - - Company + Institution/Organisation - - Categories (comma separated) - Categorie (separate da virgole) + + Kategorien (Kommagetrennt) - + Status Status - + Security-hash Hash - + reCaptcha-token reCaptcha-token - + Mathematical captcha Captcha matematico - + GDPR GDPR - + Mrs. Sig.ra - + Mr. Sig. - - Divers + Vario - + unknown sconosciuto - + subscribed, waiting for verify iscritto, in attesa di verifica - + subscribed, verified iscritto, verificato - + unsubscribed, waiting for verify iscrizione revocata, in attesa di verifica - + unsubscribed, verified iscrizione revocata e verificata - + already subscribed già iscritto - + unsubscribed disiscritto - - Email not found - E-mail non trovata - diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index 849de06..424db68 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -1,262 +1,196 @@ - - - + + +
- + Newsletter subscriber management - - Plugin for newsletter subscription and unsubscription. Used table: tt_address or fe_users. A log is written. + + Plugin for newsletter subscription and unsubscription. Used table: tt_address. A log is written. - + Log - - Date - - - Name - - + Gender - + Title - + Firstname - + Lastname - + E-Mail - + Address - + Zip - + City - + Region - + Country - + Phone - + Mobile - + Fax - + WWW - + Position - + Company - + Categories (comma separated) - + Status - + Security-hash - + reCaptcha-token - + Spam protection - + enter the result of x - + GDPR - + I agree that the operator and publisher may inform me about selected topics. My data is used exclusively for this purpose. In particular, no disclosure to unauthorized third parties. I am aware that I can revoke my consent at any time with effect for the future. The - + Privacy Policy - + applies, which also includes other information about how to correct, delete and block my data. - + Subscribe - + Unsubscribe - + Unsubscribe from the newsletter - - Resend the verification email - - - Resend the verification email - - + go back - + An email has been send to you. Please verify your email-address for the newsletter subscription. - + An email has been send to you. Please verify your email-address for the newsletter unsubscription. - - Your email-address is now verified. You are now subscribed to our newsletter with: + + Your email-address is now verfied. You are now subscribed to our newsletter with: - - Your email-address is now verified. You are now unsubscribed from our newsletter with: + + Your email-address is now verfied. You are now unsubscribed from our newsletter with: - + You have unsubscribed our newsletter successfully. - - An verification email has been resent to: - - - Error: no entry for verification found for this email: - - - Error: you must first define the setting subscribeVerifyUid (page where to verify the email address). - - + Error: wrong parameters in the link. - + Error: no entry for the given uid found. - + Error: the given hash in the link is wrong. - + Error: the link is expired! - + Error: you have verified this email-address already! - + Error: you are already subscribed to our newsletter! - + Error: you are not subscribed, so you can not be unsubscribed! - + Error: missing or wrong parameters for unsubcription! - + Error: user not found! Maybe you are already unsubscribed. - + Error: the given email-address is not valid! - + Error: the captcha is not valid! - + Error: spam detected (honeypot)! - + Error: sql insert error! - + required. - + Error: please note this messages: - + - you need to enter an valid email-address! - + - you need to accept the GDPR! - + Error: this point should not be reached! - - Error: the extension tt_address is required if you use settings.table=tt_address! - - - Error: the extension direct_mail is required if settings.module_sys_dmail_html!=-1 or settings.module_sys_dmail_category is set! - - + Dear %s %s %s, - + Dear %s %s, - - Dear %s, + + Dear %s, - + Hello, - - %s %s %s - - - %s %s - - - %s - - - Newsletter subscription - - - you need to click on the verify link to verify your email-address: - - - Alternatively, you can also click on this button - - - Best regards - - - Newsletter unsubscription - - - you need to click on the verify link to verify your unsubscription: - - - You have just successfully registered for our newsletter. - - - you are now unsubscribed from our newsletter. - - - Used email-address: - - - Name: - - - this user wants to subscribe or to unsubscribe: + + %s %s %s - - this user has just subscribed to the newsletter: + + %s %s - - this user has just unsubscribed from the newsletter: + + %s diff --git a/Resources/Private/Language/locallang_be.xlf b/Resources/Private/Language/locallang_be.xlf index d1a7563..27e9390 100644 --- a/Resources/Private/Language/locallang_be.xlf +++ b/Resources/Private/Language/locallang_be.xlf @@ -1,14 +1,11 @@ - +
Newsletter-subscriber-settings - - Startingpoint - HTML-template: @@ -33,9 +30,6 @@ Newsletter: verify unsubscription - - Newsletter: resend verification email - List view: all actions @@ -91,7 +85,7 @@ Enable a honeypot? - Search address (in tt_address/fe_users) in all specified folders? + Search address in tt_address in all specified folders? Hard or soft delete mode? @@ -115,17 +109,11 @@ Enable confirmation emails to the user? - Add language UID to email templates? - - - Direct mail unsubscribe mode: direct unsubscribe (no) or go to the unsubscribe page (yes)? + Aggiungere l'UID della lingua ai modelli di posta elettronica? Subscribe to a HTML-newsletter? - - UIDs of the direct-mail-categories (direct-mail) OR fe_groups (luxletter), e.g. 3,4 - External parameters @@ -135,21 +123,6 @@ Input-field name for the email-address (e.g. tx_myshop_pi1|newBestellung|email) - - fp_newsletter: recent 7 log entries - - - Shows date, name, email and status of the last entries - - - fp_newsletter: status diagram - - - Shows how often a status occurs - - - Status code, count - diff --git a/Resources/Private/Language/locallang_csh_tx_fpnewsletter_domain_model_log.xlf b/Resources/Private/Language/locallang_csh_tx_fpnewsletter_domain_model_log.xlf index ab7d55a..eaececf 100644 --- a/Resources/Private/Language/locallang_csh_tx_fpnewsletter_domain_model_log.xlf +++ b/Resources/Private/Language/locallang_csh_tx_fpnewsletter_domain_model_log.xlf @@ -7,7 +7,7 @@ Newsletter subscriber management - Plugin for newsletter subscription and unsubscription. For the table: tt_address or fe_users. A log is written. + Plugin for newsletter subscription and unsubscription. For the table: tt_address. A log is written. Gender diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf index 19f06cc..a142b6d 100644 --- a/Resources/Private/Language/locallang_db.xlf +++ b/Resources/Private/Language/locallang_db.xlf @@ -1,131 +1,128 @@ - - - + + +
- + Newsletter subscriber management - - Privacy compliant plugin for newsletter subscription and unsubscription (for direct_mail via tt_address/luxletter via fe_users). + + Privacy Compliant Plugin for newsletter subscription and unsubscription (for direct_mail via tt_address). - + Log - + Language - + all languages - + Parent - + Hidden? - + Time stamp - + Gender - + Title - + Firstname - + Lastname - + E-Mail - + Address - + Zip - + City - + Region - + Country - + Phone - + Mobile - + Fax - + WWW - + Position - + Company - + Categories (comma separated) - + Status - + Security-hash - + reCaptcha-token - + Mathematical captcha - + GDPR - + Mrs. - + Mr. - + Divers - + unknown - + subscribed, waiting for verify - + subscribed, verified - + unsubscribed, waiting for verify - + unsubscribed, verified - + already subscribed - + unsubscribed - - email-address not found - diff --git a/Resources/Private/Layouts/Widget.html b/Resources/Private/Layouts/Widget.html deleted file mode 100644 index df8082d..0000000 --- a/Resources/Private/Layouts/Widget.html +++ /dev/null @@ -1,18 +0,0 @@ - -
- - {f:translate(id: configuration.title, default: configuration.title)} - -
- -
- -
- - - - - - \ No newline at end of file diff --git a/Resources/Private/Partials/Email/Salutation.html b/Resources/Private/Partials/Email/Salutation.html deleted file mode 100644 index 4fa4342..0000000 --- a/Resources/Private/Partials/Email/Salutation.html +++ /dev/null @@ -1,13 +0,0 @@ -

- - - - - - - - - - - -

\ No newline at end of file diff --git a/Resources/Private/Partials/Email/Salutation.txt b/Resources/Private/Partials/Email/Salutation.txt deleted file mode 100644 index e90470d..0000000 --- a/Resources/Private/Partials/Email/Salutation.txt +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/Resources/Private/Partials/Log/FormFields.html b/Resources/Private/Partials/Log/FormFields.html index 175bb53..51ff5b2 100644 --- a/Resources/Private/Partials/Log/FormFields.html +++ b/Resources/Private/Partials/Log/FormFields.html @@ -4,181 +4,104 @@ you could use prependOptionLabel="-" prependOptionValue="0" for a select too. -
- - - - - - -
+ + +
-
- - - - - - -
+ + +
-
- - - - - - -
+ + +
-
- - - - - - -
-
-
+ + +
+ - -
+
-
- - - - - - -
+ + +
-
- - - - - - -
+ + +
-
- - - - - - -
+ + +
-
- - - - - - -
+ + +
-
- - - - - - -
+ + +
-
- - - - - - -
+ + +
-
- - - - - - -
+ + +
-
- - - - - - -
+ + +
-
- - - - - - -
+ + +
-
- - - - - - -
+ + +
-
- - - - - - -
+ + +
@@ -194,21 +117,15 @@ -
- - - (x = {log.mathcaptcha1} {f:if(condition: '{log.mathcaptchaop}', then: '+', else: '-')} {log.mathcaptcha2}; - ) -
-
-
+ + + (x = {log.mathcaptcha1} {f:if(condition: '{log.mathcaptchaop}', then: '+', else: '-')} {log.mathcaptcha2}; )
+ -
-   - - -
-
+   + + +

diff --git a/Resources/Private/Templates/Backend/PluginPreview.html b/Resources/Private/Templates/Backend/PluginPreview.html deleted file mode 100644 index 83ae682..0000000 --- a/Resources/Private/Templates/Backend/PluginPreview.html +++ /dev/null @@ -1,124 +0,0 @@ - - -{pi_flexform_transformed.settings} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{f:translate(key:'{_computed.lll}template')} - {_computed.displayMode} -
{f:translate(key:'{_computed.lll}single_records')} - -
{f:translate(key:'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.startingpoint')} - - -
{f:translate(key:'{_computed.lll}subscribeVerifyUid')} - -
{f:translate(key:'{_computed.lll}subscribeVerifyMessageUid')} - -
{f:translate(key:'{_computed.lll}unsubscribeUid')} - -
{f:translate(key:'{_computed.lll}unsubscribeMessageUid')} - -
{f:translate(key:'{_computed.lll}unsubscribeVerifyUid')} - -
{f:translate(key:'{_computed.lll}unsubscribeVerifyMessageUid')} - -
{f:translate(key:'{_computed.lll}resendVerificationUid')} - -
{f:translate(key:'{_computed.lll}gdprUid')} - -
{f:translate(key:'{_computed.lll}settings.module_sys_dmail_category')} - {flex.module_sys_dmail_category} -
{f:translate(key:'{_computed.lll}startingPoint')} - -
- - - - - - {row._computed.title}
-
- \ No newline at end of file diff --git a/Resources/Private/Templates/Email/SubscribeToAdmin.html b/Resources/Private/Templates/Email/SubscribeToAdmin.html index 2b4a750..93ee1bf 100644 --- a/Resources/Private/Templates/Email/SubscribeToAdmin.html +++ b/Resources/Private/Templates/Email/SubscribeToAdmin.html @@ -5,11 +5,11 @@ Newsletter -

-

-

{gender} {title} {firstname} {lastname}

-

{email}

-


+

Guten Tag,

+

dieser User hat sich gerade zum Newsletter angemeldet:

+

Name: {gender} {title} {firstname} {lastname}

+

E-Mail: {email}

+

Mit freundlichen Grüßen
{settings.company}

\ No newline at end of file diff --git a/Resources/Private/Templates/Email/SubscribeToAdmin.txt b/Resources/Private/Templates/Email/SubscribeToAdmin.txt index 49c265d..54ac53f 100644 --- a/Resources/Private/Templates/Email/SubscribeToAdmin.txt +++ b/Resources/Private/Templates/Email/SubscribeToAdmin.txt @@ -1,8 +1,8 @@ - +Guten Tag, - - {gender} {title} {firstname} {lastname} - {email} +dieser User hat sich gerade zum Newsletter angemeldet: +Name: {gender} {title} {firstname} {lastname} +E-Mail: {email} - +Mit freundlichen Grüßen {settings.company} \ No newline at end of file diff --git a/Resources/Private/Templates/Email/SubscribeVerify.html b/Resources/Private/Templates/Email/SubscribeVerify.html index 6423078..f795dbf 100644 --- a/Resources/Private/Templates/Email/SubscribeVerify.html +++ b/Resources/Private/Templates/Email/SubscribeVerify.html @@ -2,18 +2,25 @@ -<f:translate key="email.subscription" /> +Newsletter-Anmeldung - -

-

-

-


+

+ + + + + + + + + + + +

+

um sich zu unserem Newsletter anzumelden, müssen Sie Ihre E-Mailadresse mit Klick auf diesen Link verifizieren:

+

+

Mit freundlichen Grüßen
{settings.company}

\ No newline at end of file diff --git a/Resources/Private/Templates/Email/SubscribeVerify.txt b/Resources/Private/Templates/Email/SubscribeVerify.txt index b5cdc9e..dc063ca 100644 --- a/Resources/Private/Templates/Email/SubscribeVerify.txt +++ b/Resources/Private/Templates/Email/SubscribeVerify.txt @@ -1,6 +1,12 @@ - - - + + + + + + + +um sich zu unserem Newsletter anzumelden, müssen Sie Ihre E-Mailadresse mit Klick auf diesen Link verifizieren: + - +Mit freundlichen Grüßen {settings.company} \ No newline at end of file diff --git a/Resources/Private/Templates/Email/SubscribeVerify0.html b/Resources/Private/Templates/Email/SubscribeVerify0.html deleted file mode 100644 index 9a38413..0000000 --- a/Resources/Private/Templates/Email/SubscribeVerify0.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - -Newsletter-Anmeldung - - - -

um sich zu unserem Newsletter anzumelden, müssen Sie Ihre E-Mail-Adresse mit Klick auf diesen Link verifizieren:

-

-

Alternativ können Sie auch auf diesen Button klicken

-

Mit freundlichen Grüßen
-{settings.company}

- - \ No newline at end of file diff --git a/Resources/Private/Templates/Email/SubscribeVerify0.txt b/Resources/Private/Templates/Email/SubscribeVerify0.txt deleted file mode 100644 index 682ddb9..0000000 --- a/Resources/Private/Templates/Email/SubscribeVerify0.txt +++ /dev/null @@ -1,6 +0,0 @@ - -um sich zu unserem Newsletter anzumelden, müssen Sie Ihre E-Mailadresse mit Klick auf diesen Link verifizieren: - - -Mit freundlichen Grüßen -{settings.company} \ No newline at end of file diff --git a/Resources/Private/Templates/Email/SubscribeVerify1.html b/Resources/Private/Templates/Email/SubscribeVerify1.html index 11ebcea..e963519 100644 --- a/Resources/Private/Templates/Email/SubscribeVerify1.html +++ b/Resources/Private/Templates/Email/SubscribeVerify1.html @@ -5,12 +5,21 @@ Newsletter subscription - +

+ + + + + + + + + + + +

you need to click at the verify link to verify your email-address:

-

-

Alternatively, you can also click on this button

+

Best regards
{settings.company}

diff --git a/Resources/Private/Templates/Email/SubscribeVerify1.txt b/Resources/Private/Templates/Email/SubscribeVerify1.txt index 9582cf6..173a216 100644 --- a/Resources/Private/Templates/Email/SubscribeVerify1.txt +++ b/Resources/Private/Templates/Email/SubscribeVerify1.txt @@ -1,6 +1,12 @@ - + + + + + + + you need to click at the verify link to verify your email-address: - + Best regards {settings.company} \ No newline at end of file diff --git a/Resources/Private/Templates/Email/Subscribed.html b/Resources/Private/Templates/Email/Subscribed.html index fad81b9..d539f47 100644 --- a/Resources/Private/Templates/Email/Subscribed.html +++ b/Resources/Private/Templates/Email/Subscribed.html @@ -2,13 +2,25 @@ -<f:translate key="email.subscription" /> +Newsletter-Anmeldung - -

-

{email}

-


+

+ + + + + + + + + + + +

+

Sie haben sich soeben erfolgreich zu unserem Newsletter angemeldet.

+

Verwendete E-Mail-Adresse: {email}

+

Mit freundlichen Grüßen
{settings.company}

\ No newline at end of file diff --git a/Resources/Private/Templates/Email/Subscribed.txt b/Resources/Private/Templates/Email/Subscribed.txt index 443b3b7..0ef6fa5 100644 --- a/Resources/Private/Templates/Email/Subscribed.txt +++ b/Resources/Private/Templates/Email/Subscribed.txt @@ -1,6 +1,12 @@ - - - {email} + + + + + + + +Sie haben sich soeben erfolgreich zu unserem Newsletter angemeldet. +Verwendete E-Mail-Adresse: {email} - +Mit freundlichen Grüßen {settings.company} \ No newline at end of file diff --git a/Resources/Private/Templates/Email/Subscribed0.html b/Resources/Private/Templates/Email/Subscribed0.html deleted file mode 100644 index b17c2b1..0000000 --- a/Resources/Private/Templates/Email/Subscribed0.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - -Newsletter-Anmeldung - - - -

Sie haben sich soeben erfolgreich zu unserem Newsletter angemeldet.

-

Verwendete E-Mail-Adresse: {email}

-

Mit freundlichen Grüßen
-{settings.company}

- - \ No newline at end of file diff --git a/Resources/Private/Templates/Email/Subscribed0.txt b/Resources/Private/Templates/Email/Subscribed0.txt deleted file mode 100644 index 12c4135..0000000 --- a/Resources/Private/Templates/Email/Subscribed0.txt +++ /dev/null @@ -1,6 +0,0 @@ - -Sie haben sich soeben erfolgreich zu unserem Newsletter angemeldet. -Verwendete E-Mail-Adresse: {email} - -Mit freundlichen Grüßen -{settings.company} \ No newline at end of file diff --git a/Resources/Private/Templates/Email/Subscribed1.html b/Resources/Private/Templates/Email/Subscribed1.html index 86f20a4..9295a74 100644 --- a/Resources/Private/Templates/Email/Subscribed1.html +++ b/Resources/Private/Templates/Email/Subscribed1.html @@ -5,7 +5,19 @@ Newsletter-Subscription - +

+ + + + + + + + + + + +

You have just successfully registered for our newsletter.

Used email-address: {email}

Best regards
diff --git a/Resources/Private/Templates/Email/Subscribed1.txt b/Resources/Private/Templates/Email/Subscribed1.txt index dec70e6..4e0b62e 100644 --- a/Resources/Private/Templates/Email/Subscribed1.txt +++ b/Resources/Private/Templates/Email/Subscribed1.txt @@ -1,4 +1,10 @@ - + + + + + + + You have just successfully registered for our newsletter. Used email-address: {email} diff --git a/Resources/Private/Templates/Email/UnsubscribeToAdmin.html b/Resources/Private/Templates/Email/UnsubscribeToAdmin.html index 8a94933..63838e3 100644 --- a/Resources/Private/Templates/Email/UnsubscribeToAdmin.html +++ b/Resources/Private/Templates/Email/UnsubscribeToAdmin.html @@ -5,11 +5,11 @@ Newsletter -

-

-

{gender} {title} {firstname} {lastname}

-

{email}

-


+

Guten Tag,

+

dieser User hat sich gerade vom Newsletter abgemeldet:

+

Name: {gender} {title} {firstname} {lastname}

+

E-Mail: {email}

+

Mit freundlichen Grüßen
{settings.company}

\ No newline at end of file diff --git a/Resources/Private/Templates/Email/UnsubscribeToAdmin.txt b/Resources/Private/Templates/Email/UnsubscribeToAdmin.txt index 1120d98..8491757 100644 --- a/Resources/Private/Templates/Email/UnsubscribeToAdmin.txt +++ b/Resources/Private/Templates/Email/UnsubscribeToAdmin.txt @@ -1,8 +1,8 @@ - +Guten Tag, - - {gender} {title} {firstname} {lastname} - {email} +dieser User hat sich gerade vom Newsletter abgemeldet: +Name: {gender} {title} {firstname} {lastname} +E-Mail: {email} - +Mit freundlichen Grüßen {settings.company} \ No newline at end of file diff --git a/Resources/Private/Templates/Email/UnsubscribeVerify.html b/Resources/Private/Templates/Email/UnsubscribeVerify.html index f45b75c..6bc9141 100644 --- a/Resources/Private/Templates/Email/UnsubscribeVerify.html +++ b/Resources/Private/Templates/Email/UnsubscribeVerify.html @@ -2,16 +2,25 @@ -<f:translate key="email.unsubscription" /> +Newsletter-Abmeldung - -

-

-

-


+

+ + + + + + + + + + + +

+

um sich von unserem Newsletter abzumelden, müssen Sie Ihre E-Mailadresse mit Klick auf diesen Link verifizieren:

+

+

Mit freundlichen Grüßen
{settings.company}

\ No newline at end of file diff --git a/Resources/Private/Templates/Email/UnsubscribeVerify.txt b/Resources/Private/Templates/Email/UnsubscribeVerify.txt index 7a2975f..24b866e 100644 --- a/Resources/Private/Templates/Email/UnsubscribeVerify.txt +++ b/Resources/Private/Templates/Email/UnsubscribeVerify.txt @@ -1,6 +1,12 @@ - - - + + + + + + + +um sich von unserem Newsletter abzumelden, müssen Sie Ihre E-Mailadresse mit Klick auf diesen Link verifizieren: + - +Mit freundlichen Grüßen {settings.company} \ No newline at end of file diff --git a/Resources/Private/Templates/Email/UnsubscribeVerify0.html b/Resources/Private/Templates/Email/UnsubscribeVerify0.html deleted file mode 100644 index 0984229..0000000 --- a/Resources/Private/Templates/Email/UnsubscribeVerify0.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - -Newsletter-Abmeldung - - - -

um sich von unserem Newsletter abzumelden, müssen Sie Ihre E-Mail-Adresse mit Klick auf diesen Link verifizieren:

-

-

Alternativ können Sie auch auf diesen Button klicken

-

Mit freundlichen Grüßen
-{settings.company}

- - \ No newline at end of file diff --git a/Resources/Private/Templates/Email/UnsubscribeVerify0.txt b/Resources/Private/Templates/Email/UnsubscribeVerify0.txt deleted file mode 100644 index 3ddb5b2..0000000 --- a/Resources/Private/Templates/Email/UnsubscribeVerify0.txt +++ /dev/null @@ -1,6 +0,0 @@ - -um sich von unserem Newsletter abzumelden, müssen Sie Ihre E-Mailadresse mit Klick auf diesen Link verifizieren: - - -Mit freundlichen Grüßen -{settings.company} \ No newline at end of file diff --git a/Resources/Private/Templates/Email/UnsubscribeVerify1.html b/Resources/Private/Templates/Email/UnsubscribeVerify1.html index e61e895..b0c16ed 100644 --- a/Resources/Private/Templates/Email/UnsubscribeVerify1.html +++ b/Resources/Private/Templates/Email/UnsubscribeVerify1.html @@ -5,11 +5,21 @@ Newsletter unsubscription - +

+ + + + + + + + + + + +

you need to click at the verify link to verify your unsubscription:

-

-

Alternatively, you can also click on this button

+

Best regards
{settings.company}

diff --git a/Resources/Private/Templates/Email/UnsubscribeVerify1.txt b/Resources/Private/Templates/Email/UnsubscribeVerify1.txt index eb40c5f..089fd9e 100644 --- a/Resources/Private/Templates/Email/UnsubscribeVerify1.txt +++ b/Resources/Private/Templates/Email/UnsubscribeVerify1.txt @@ -1,6 +1,12 @@ - + + + + + + + you need to click at the verify link to verify your unsubscription: - + Best regards {settings.company} \ No newline at end of file diff --git a/Resources/Private/Templates/Email/Unsubscribed.html b/Resources/Private/Templates/Email/Unsubscribed.html index 12fdcba..7f4d2cf 100644 --- a/Resources/Private/Templates/Email/Unsubscribed.html +++ b/Resources/Private/Templates/Email/Unsubscribed.html @@ -2,13 +2,25 @@ -<f:translate key="email.unsubscription" /> +Newsletter-Abmeldung - -

-

{email}

-


+

+ + + + + + + + + + + +

+

Sie haben sich nun erfolgreich von unserem Newsletter abgemeldet.

+

Verwendete E-Mail-Adresse: {email}

+

Mit freundlichen Grüßen
{settings.company}

\ No newline at end of file diff --git a/Resources/Private/Templates/Email/Unsubscribed.txt b/Resources/Private/Templates/Email/Unsubscribed.txt index 3a40677..c75948e 100644 --- a/Resources/Private/Templates/Email/Unsubscribed.txt +++ b/Resources/Private/Templates/Email/Unsubscribed.txt @@ -1,6 +1,12 @@ - - - {email} + + + + + + + +Sie haben sich nun erfolgreich von unserem Newsletter abgemeldet. +Verwendete E-Mail-Adresse: {email} - +Mit freundlichen Grüßen {settings.company} \ No newline at end of file diff --git a/Resources/Private/Templates/Email/Unsubscribed0.html b/Resources/Private/Templates/Email/Unsubscribed0.html deleted file mode 100644 index d564336..0000000 --- a/Resources/Private/Templates/Email/Unsubscribed0.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - -Newsletter-Abmeldung - - - -

Sie haben sich nun erfolgreich von unserem Newsletter abgemeldet.

-

Verwendete E-Mail-Adresse: {email}

-

Mit freundlichen Grüßen
-{settings.company}

- - \ No newline at end of file diff --git a/Resources/Private/Templates/Email/Unsubscribed0.txt b/Resources/Private/Templates/Email/Unsubscribed0.txt deleted file mode 100644 index 734f171..0000000 --- a/Resources/Private/Templates/Email/Unsubscribed0.txt +++ /dev/null @@ -1,6 +0,0 @@ - -Sie haben sich nun erfolgreich von unserem Newsletter abgemeldet. -Verwendete E-Mail-Adresse: {email} - -Mit freundlichen Grüßen -{settings.company} \ No newline at end of file diff --git a/Resources/Private/Templates/Email/Unsubscribed1.html b/Resources/Private/Templates/Email/Unsubscribed1.html index 38eb5ad..f47a2e8 100644 --- a/Resources/Private/Templates/Email/Unsubscribed1.html +++ b/Resources/Private/Templates/Email/Unsubscribed1.html @@ -5,7 +5,19 @@ Newsletter-Unsubscription - +

+ + + + + + + + + + + +

you are now unsubscribed from our newsletter.

Used email-address: {email}

Best regards
diff --git a/Resources/Private/Templates/Email/Unsubscribed1.txt b/Resources/Private/Templates/Email/Unsubscribed1.txt index 5671ed8..cf7ad93 100644 --- a/Resources/Private/Templates/Email/Unsubscribed1.txt +++ b/Resources/Private/Templates/Email/Unsubscribed1.txt @@ -1,4 +1,10 @@ - + + + + + + + you are now unsubscribed from our newsletter. Used email-address: {email} diff --git a/Resources/Private/Templates/Email/UserToAdmin.html b/Resources/Private/Templates/Email/UserToAdmin.html index 9fbd667..2823300 100644 --- a/Resources/Private/Templates/Email/UserToAdmin.html +++ b/Resources/Private/Templates/Email/UserToAdmin.html @@ -5,11 +5,11 @@ Newsletter -

-

-

{gender} {title} {firstname} {lastname}

-

{email}

-


+

Guten Tag,

+

dieser User möchte sich gerne an- oder abmelden:

+

Name: {gender} {title} {firstname} {lastname}

+

E-Mail: {email}

+

Mit freundlichen Grüßen
{settings.company}

\ No newline at end of file diff --git a/Resources/Private/Templates/Email/UserToAdmin.txt b/Resources/Private/Templates/Email/UserToAdmin.txt index 09c0fc3..320fb89 100644 --- a/Resources/Private/Templates/Email/UserToAdmin.txt +++ b/Resources/Private/Templates/Email/UserToAdmin.txt @@ -1,8 +1,8 @@ - +Guten Tag, - - {gender} {title} {firstname} {lastname} - {email} +dieser User möchte sich gerne an- oder abmelden: +Name: {gender} {title} {firstname} {lastname} +E-Mail: {email} - +Mit freundlichen Grüßen {settings.company} \ No newline at end of file diff --git a/Resources/Private/Templates/Log/Create.html b/Resources/Private/Templates/Log/Create.html index 5b09041..a1f6e88 100644 --- a/Resources/Private/Templates/Log/Create.html +++ b/Resources/Private/Templates/Log/Create.html @@ -36,10 +36,6 @@

{f:translate(key: 'email_send1', default: 'email sent to you')}

- - -

{f:translate(key: 'resendLink', default: 'resend')}

-
diff --git a/Resources/Private/Templates/Log/Delete.html b/Resources/Private/Templates/Log/Delete.html index 507aa55..5fb18d3 100644 --- a/Resources/Private/Templates/Log/Delete.html +++ b/Resources/Private/Templates/Log/Delete.html @@ -5,6 +5,9 @@ + +

{f:translate(key: 'wrong_parameter', default: 'wrong parameters')}

+

{f:translate(key: 'wrong_unsubscribed', default: 'you are not subscribed')}

diff --git a/Resources/Private/Templates/Log/New.html b/Resources/Private/Templates/Log/New.html index c6d3dd6..e2ea2ed 100644 --- a/Resources/Private/Templates/Log/New.html +++ b/Resources/Private/Templates/Log/New.html @@ -1,50 +1,45 @@ -
- - -

{f:translate(key: 'wrong_email', default: 'ivalid email')}

-
- -

{f:translate(key: 'wrong_captcha', default: 'ivalid captcha')}

-
- -

{f:translate(key: 'wrong_honeypot', default: 'spam detected')}

-
- -

{f:translate(key: 'missing_tt_address', default: 'missing tt_address')}

-
- -

{f:translate(key: 'missing_direct_mail', default: 'missing direct_mail')}

-
+
+ +
+ + +

{f:translate(key: 'wrong_parameter', default: 'wrong parameters')}

- - - - + +

{f:translate(key: 'wrong_email', default: 'ivalid email')}

+
+ +

{f:translate(key: 'wrong_captcha', default: 'ivalid captcha')}

+
+ +

{f:translate(key: 'wrong_honeypot', default: 'spam detected')}

+
- - - - + + + + - -

{f:translate(key: 'resendLink', default: 'resend')}

-
+ + + + - - -
-

{f:translate(key: 'unsubscribe_head', default: 'subscribe')}

- - - - -
-
-
-

*) {f:translate(key: 'required', default: 'required')}

+ + +
+

{f:translate(key: 'unsubscribe_head', default: 'subscribe')}

+ + + + +
+
+
+

*) {f:translate(key: 'required', default: 'required')}

\ No newline at end of file diff --git a/Resources/Private/Templates/Log/Resend.html b/Resources/Private/Templates/Log/Resend.html deleted file mode 100644 index 5f9d833..0000000 --- a/Resources/Private/Templates/Log/Resend.html +++ /dev/null @@ -1,26 +0,0 @@ - - - -
- - - -

{f:translate(key: 'email_resent', default: 'email was resend')} {email}.

-
- -

{f:translate(key: 'wrong_email_not_found', default: 'ivalid email')} {email}.

-
-
-
- - - -
- - -
-
-

{f:translate(key: 'wrong_missing_subscribeVerifyUid', default: 'missing subscribeVerifyUid')}

-
-
- \ No newline at end of file diff --git a/Resources/Private/Templates/Log/Unsubscribe.html b/Resources/Private/Templates/Log/Unsubscribe.html index 1e485cb..693bec4 100644 --- a/Resources/Private/Templates/Log/Unsubscribe.html +++ b/Resources/Private/Templates/Log/Unsubscribe.html @@ -5,6 +5,9 @@ + +

{f:translate(key: 'wrong_parameter', default: 'wrong parameters')}

+

{f:translate(key: 'wrong_email', default: 'ivalid email')}

diff --git a/Resources/Private/Templates/Widget/RecentLogEntries.html b/Resources/Private/Templates/Widget/RecentLogEntries.html deleted file mode 100644 index 12c925f..0000000 --- a/Resources/Private/Templates/Widget/RecentLogEntries.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -
{f:translate(id: configuration.title, default: configuration.title)}
-
- - - - - - - - - - - - - - - - - -
{f:translate(key: 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang.xlf:tx_fpnewsletter_domain_model_log.date')}{f:translate(key: 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang.xlf:tx_fpnewsletter_domain_model_log.email')}{f:translate(key: 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang.xlf:tx_fpnewsletter_domain_model_log.status')}
- {log.tstamp} - - {log.firstname} {log.lastname} - - {log.email} - - - {f:translate(key: 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.0')} - {f:translate(key: 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.1')} - {f:translate(key: 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.2')} - {f:translate(key: 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.3')} - {f:translate(key: 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.4')} - {f:translate(key: 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.5')} - {f:translate(key: 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.6')} - {f:translate(key: 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.7')} - {f:translate(key: 'LLL:EXT:fp_newsletter/Resources/Private/Language/locallang_db.xlf:tx_fpnewsletter_domain_model_log.status.8')} - {log.status} - -
-
- - - - diff --git a/SECURITY.md b/SECURITY.md index 80ed8bd..f1678a7 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -6,14 +6,10 @@ Use this section to tell people about which versions of your project are currently being supported with security updates. | Version | Supported | -|---------| ------------------ | -| 3.2.x | :white_check_mark: | -| 3.1.x | :white_check_mark: | -| 3.0.x | :white_check_mark: | -| 2.2.x | :x: | -| 2.1.x | :x: | -| 2.0.x | :x: | -| 1.2.x | :x: | +| ------- | ------------------ | +| 2.1.x | :white_check_mark: | +| 2.0.x | :white_check_mark: | +| 1.2.x | :white_check_mark: | | 1.1.x | :x: | | 1.0.x | :x: | | < 1.0 | :x: | diff --git a/composer.json b/composer.json index 4ee24c1..2953c8f 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name" : "fixpunkt/fp-newsletter", "type" : "typo3-cms-extension", - "description" : "Plugin for newsletter subscription and unsubscription (for direct_mail). Used table: tt_address or fe_users. A log is written.", + "description" : "Plugin for newsletter subscription and unsubscription (for direct_mail). Used table: tt_address. A log is written.", "authors" : [{ "name" : "Kurt Gusbeth", "role" : "Developer", @@ -9,7 +9,7 @@ } ], "require" : { - "typo3/cms-core" : "~10.4.6 || ~11.5.3" + "typo3/cms-core" : "~9.5.20 || ~10.4.6" }, "autoload" : { "psr-4" : { @@ -25,6 +25,9 @@ "typo3-ter/fp-newsletter" : "self.version" }, "homepage" : "https://www.fixpunkt.com/webentwicklung/typo3/typo3-programmierung", + "support" : { + "email" : "info@quizpalme.de" + }, "license" : "GPL-3.0-or-later", "keywords" : [ "newsletter subscription", diff --git a/ext_emconf.php b/ext_emconf.php index 8933be2..5d27cda 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -12,16 +12,20 @@ $EM_CONF[$_EXTKEY] = [ 'title' => 'Newsletter subscriber management', - 'description' => 'Plugin for newsletter subscription and unsubscription with double opt in (and double opt out). For: direct_mail or luxletter / tt_address or fe_users. A log is written.', + 'description' => 'Plugin for newsletter subscription and unsubscription with double opt in (and double opt out). Used table: tt_address. A log is written.', 'category' => 'plugin', 'author' => 'Kurt Gusbeth', 'author_company' => 'fixpunkt werbeagentur gmbh', + 'author_email' => 'info@quizpalme.de', 'state' => 'stable', + 'internal' => '', + 'uploadfolder' => '0', + 'createDirs' => '', 'clearCacheOnLoad' => 0, - 'version' => '3.2.5', + 'version' => '2.1.2', 'constraints' => [ 'depends' => [ - 'typo3' => '10.4.6-11.5.99' + 'typo3' => '9.5.20-10.4.99' ], 'conflicts' => [], 'suggests' => [], diff --git a/ext_localconf.php b/ext_localconf.php index a4de233..2d24662 100644 --- a/ext_localconf.php +++ b/ext_localconf.php @@ -4,17 +4,20 @@ call_user_func( function() { + \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin( - 'FpNewsletter', + 'Fixpunkt.FpNewsletter', 'Pi1', [ - \Fixpunkt\FpNewsletter\Controller\LogController::class => 'new, create, resend, subscribeExt, unsubscribe, unsubscribeDM, delete, verify, verifyUnsubscribe, list' + 'Log' => 'new, create, subscribeExt, unsubscribe, unsubscribeDM, delete, verify, verifyUnsubscribe, list' ], + // non-cacheable actions [ - \Fixpunkt\FpNewsletter\Controller\LogController::class => 'new, create, resend, subscribeExt, unsubscribe, unsubscribeDM, delete, verify, verifyUnsubscribe' + 'Log' => 'new, create, subscribeExt, unsubscribe, unsubscribeDM, delete, verify, verifyUnsubscribe' ] ); + // wizards \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig( 'mod { wizards.newContentElement.wizardItems.plugins { @@ -44,11 +47,6 @@ function() } ); -// Plugin Preview -$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']['fp_newsletter'] - = \Fixpunkt\FpNewsletter\Hooks\PageLayoutViewHook::class; -\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('mod.web_layout.tt_content.preview.list.fpnewsletter_pi1 = EXT:fp_newsletter/Resources/Private/Templates/Backend/PluginPreview.html'); - if (empty($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks']['TYPO3\\CMS\\Scheduler\\Task\\TableGarbageCollectionTask']['options']['tables']['tx_fpnewsletter_domain_model_log'])) { $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks']['TYPO3\\CMS\\Scheduler\\Task\\TableGarbageCollectionTask']['options']['tables']['tx_fpnewsletter_domain_model_log'] = array( 'dateField' => 'tstamp', diff --git a/ext_tables.php b/ext_tables.php index 931b3c3..788336f 100644 --- a/ext_tables.php +++ b/ext_tables.php @@ -4,7 +4,17 @@ call_user_func( function() { + + \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin( + 'Fixpunkt.FpNewsletter', + 'Pi1', + 'Newsletter management' + ); + + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('fp_newsletter', 'Configuration/TypoScript', 'Newsletter management'); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_fpnewsletter_domain_model_log', 'EXT:fp_newsletter/Resources/Private/Language/locallang_csh_tx_fpnewsletter_domain_model_log.xlf'); \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_fpnewsletter_domain_model_log'); + } ); diff --git a/ext_tables.sql b/ext_tables.sql index 9609993..c4bc5f7 100644 --- a/ext_tables.sql +++ b/ext_tables.sql @@ -13,7 +13,7 @@ CREATE TABLE tx_fpnewsletter_domain_model_log ( email varchar(255) DEFAULT '' NOT NULL, status int(11) DEFAULT '0' NOT NULL, securityhash varchar(255) DEFAULT '' NOT NULL, - retoken text, + retoken tinytext, mathcaptcha varchar(5) DEFAULT '' NOT NULL, extras varchar(255) DEFAULT '' NOT NULL, gdpr tinyint(1) unsigned DEFAULT '0' NOT NULL,