Loading lib/Controller/AccountController.php +5 −1 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ namespace OCA\EcloudAccounts\Controller; use Exception; use OCA\EcloudAccounts\AppInfo\Application; use OCA\EcloudAccounts\Service\CaptchaService; use OCA\EcloudAccounts\Service\NewsLetterService; use OCA\EcloudAccounts\Service\UserService; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; Loading @@ -26,6 +27,7 @@ class AccountController extends Controller { protected $appName; protected $request; private $userService; private $newsletterService; private $captchaService; protected $l10nFactory; private $session; Loading @@ -40,6 +42,7 @@ class AccountController extends Controller { $AppName, IRequest $request, UserService $userService, NewsLetterService $newsletterService, CaptchaService $captchaService, IFactory $l10nFactory, IUserSession $userSession, Loading @@ -50,6 +53,7 @@ class AccountController extends Controller { parent::__construct($AppName, $request); $this->appName = $AppName; $this->userService = $userService; $this->newsletterService = $newsletterService; $this->captchaService = $captchaService; $this->l10nFactory = $l10nFactory; $this->session = $session; Loading Loading @@ -137,7 +141,7 @@ class AccountController extends Controller { $this->userService->createNewDomainAlias($username, $userEmail); $this->userService->setTOS($username, true); $this->userService->setUserLanguage($username, $language); $this->userService->setNewsletterSignup($newsletterEos, $newsletterProduct, $userEmail, $language); $this->newsletterService->setNewsletterSignup($newsletterEos, $newsletterProduct, $userEmail, $language); if($recoveryEmail !== '') { $this->userService->setUnverifiedRecoveryEmail($username, $recoveryEmail); Loading lib/Service/NewsLetterService.php 0 → 100644 +73 −0 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace OCA\EcloudAccounts\Service; use Exception; use OCP\IConfig; use OCP\ILogger; use OCP\IUserManager; class NewsLetterService { private $userManager; private $config; private $curl; private $logger; public function __construct($appName, IUserManager $userManager, IConfig $config, CurlService $curlService, ILogger $logger) { $this->userManager = $userManager; $this->config = $config; $this->curl = $curlService; $this->logger = $logger; } public function setNewsletterSignup(bool $newsletterEos, bool $newsletterProduct, string $userEmail, string $language): void { if ($newsletterEos || $newsletterProduct) { $listIds = []; $newsletterListIds = $this->config->getSystemValue('newsletter_list_ids'); if ($newsletterEos) { $listIds[] = $newsletterListIds['eos']; } if ($newsletterProduct) { $listIds[] = $newsletterListIds['product']; } if (!empty($listIds)) { try { $this->signupForNewsletter($userEmail, $listIds, $language); } catch (Exception $e) { $this->logger->error('Signup for newsletter failed: ' . $e->getMessage()); } } } } private function signupForNewsletter(string $userEmail, array $listIds, string $userLanguage): void { $newsletterApiUrl = $this->config->getSystemValue('newsletter_base_url', ''); if (empty($newsletterApiUrl)) { return; } $endpoint = '/api/signup'; $url = $newsletterApiUrl . $endpoint; $params = [ 'email' => $userEmail, 'list_ids' => $listIds, 'contact_language' => $userLanguage ]; $params_string = json_encode($params); $headers = [ 'Content-Type: application/json', 'Content-Length: ' . strlen($params_string) ]; $this->curl->post($url, $params, $headers); if ($this->curl->getLastStatusCode() !== 200) { throw new Exception('Error adding email ' . $userEmail . ' to newsletter app'); } } } lib/Service/UserService.php +0 −66 Original line number Diff line number Diff line Loading @@ -448,70 +448,4 @@ class UserService { throw new Exception('Error adding username ' . $username . ' to common data store'); } } /** * Newsletter signup, * perform call to newsletter app api to signup the user * * @param bool $newsletterEos * @param bool $newsletterProduct * @param string $userEmail * @param string $language * @return void */ public function setNewsletterSignup(bool $newsletterEos, bool $newsletterProduct, string $userEmail, string $language): void { if ($newsletterEos || $newsletterProduct) { $listIds = []; $newsletterListIds = $this->config->getSystemValue('newsletter_list_ids'); if ($newsletterEos) { $listIds[] = $newsletterListIds['eos']; } if ($newsletterProduct) { $listIds[] = $newsletterListIds['product']; } if (!empty($listIds)) { try { $this->signupForNewsletter($userEmail, $listIds, $language); } catch (Exception $e) { $this->logger->error('Signup for newsletter failed: ' . $e->getMessage()); } } } } /** * Signup for newsletter, * perform call to newsletter app api to signup the user * * @param string $userEmail * @param Array $listIds * @param string $userLanguage * @return mixed response of the external endpoint */ public function signupForNewsletter(string $userEmail, array $listIds, string $userLanguage): void { $newsletterApiUrl = $this->config->getSystemValue('newsletter_base_url', ''); if (!isset($newsletterApiUrl) || empty($newsletterApiUrl)) { return; } $endpoint = '/api/signup'; $url = $newsletterApiUrl . $endpoint ; $params = [ 'email' => $userEmail, 'list_ids' => $listIds, 'contact_language' => $userLanguage ]; $params_string = json_encode($params); $headers = [ 'Content-Type: application/json', 'Content-Length: ' . strlen($params_string) ]; $this->curl->post($url, $params, $headers); if ($this->curl->getLastStatusCode() !== 200) { throw new Exception('Error adding email ' . $userEmail . ' to newsletter app'); } } } Loading
lib/Controller/AccountController.php +5 −1 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ namespace OCA\EcloudAccounts\Controller; use Exception; use OCA\EcloudAccounts\AppInfo\Application; use OCA\EcloudAccounts\Service\CaptchaService; use OCA\EcloudAccounts\Service\NewsLetterService; use OCA\EcloudAccounts\Service\UserService; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; Loading @@ -26,6 +27,7 @@ class AccountController extends Controller { protected $appName; protected $request; private $userService; private $newsletterService; private $captchaService; protected $l10nFactory; private $session; Loading @@ -40,6 +42,7 @@ class AccountController extends Controller { $AppName, IRequest $request, UserService $userService, NewsLetterService $newsletterService, CaptchaService $captchaService, IFactory $l10nFactory, IUserSession $userSession, Loading @@ -50,6 +53,7 @@ class AccountController extends Controller { parent::__construct($AppName, $request); $this->appName = $AppName; $this->userService = $userService; $this->newsletterService = $newsletterService; $this->captchaService = $captchaService; $this->l10nFactory = $l10nFactory; $this->session = $session; Loading Loading @@ -137,7 +141,7 @@ class AccountController extends Controller { $this->userService->createNewDomainAlias($username, $userEmail); $this->userService->setTOS($username, true); $this->userService->setUserLanguage($username, $language); $this->userService->setNewsletterSignup($newsletterEos, $newsletterProduct, $userEmail, $language); $this->newsletterService->setNewsletterSignup($newsletterEos, $newsletterProduct, $userEmail, $language); if($recoveryEmail !== '') { $this->userService->setUnverifiedRecoveryEmail($username, $recoveryEmail); Loading
lib/Service/NewsLetterService.php 0 → 100644 +73 −0 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace OCA\EcloudAccounts\Service; use Exception; use OCP\IConfig; use OCP\ILogger; use OCP\IUserManager; class NewsLetterService { private $userManager; private $config; private $curl; private $logger; public function __construct($appName, IUserManager $userManager, IConfig $config, CurlService $curlService, ILogger $logger) { $this->userManager = $userManager; $this->config = $config; $this->curl = $curlService; $this->logger = $logger; } public function setNewsletterSignup(bool $newsletterEos, bool $newsletterProduct, string $userEmail, string $language): void { if ($newsletterEos || $newsletterProduct) { $listIds = []; $newsletterListIds = $this->config->getSystemValue('newsletter_list_ids'); if ($newsletterEos) { $listIds[] = $newsletterListIds['eos']; } if ($newsletterProduct) { $listIds[] = $newsletterListIds['product']; } if (!empty($listIds)) { try { $this->signupForNewsletter($userEmail, $listIds, $language); } catch (Exception $e) { $this->logger->error('Signup for newsletter failed: ' . $e->getMessage()); } } } } private function signupForNewsletter(string $userEmail, array $listIds, string $userLanguage): void { $newsletterApiUrl = $this->config->getSystemValue('newsletter_base_url', ''); if (empty($newsletterApiUrl)) { return; } $endpoint = '/api/signup'; $url = $newsletterApiUrl . $endpoint; $params = [ 'email' => $userEmail, 'list_ids' => $listIds, 'contact_language' => $userLanguage ]; $params_string = json_encode($params); $headers = [ 'Content-Type: application/json', 'Content-Length: ' . strlen($params_string) ]; $this->curl->post($url, $params, $headers); if ($this->curl->getLastStatusCode() !== 200) { throw new Exception('Error adding email ' . $userEmail . ' to newsletter app'); } } }
lib/Service/UserService.php +0 −66 Original line number Diff line number Diff line Loading @@ -448,70 +448,4 @@ class UserService { throw new Exception('Error adding username ' . $username . ' to common data store'); } } /** * Newsletter signup, * perform call to newsletter app api to signup the user * * @param bool $newsletterEos * @param bool $newsletterProduct * @param string $userEmail * @param string $language * @return void */ public function setNewsletterSignup(bool $newsletterEos, bool $newsletterProduct, string $userEmail, string $language): void { if ($newsletterEos || $newsletterProduct) { $listIds = []; $newsletterListIds = $this->config->getSystemValue('newsletter_list_ids'); if ($newsletterEos) { $listIds[] = $newsletterListIds['eos']; } if ($newsletterProduct) { $listIds[] = $newsletterListIds['product']; } if (!empty($listIds)) { try { $this->signupForNewsletter($userEmail, $listIds, $language); } catch (Exception $e) { $this->logger->error('Signup for newsletter failed: ' . $e->getMessage()); } } } } /** * Signup for newsletter, * perform call to newsletter app api to signup the user * * @param string $userEmail * @param Array $listIds * @param string $userLanguage * @return mixed response of the external endpoint */ public function signupForNewsletter(string $userEmail, array $listIds, string $userLanguage): void { $newsletterApiUrl = $this->config->getSystemValue('newsletter_base_url', ''); if (!isset($newsletterApiUrl) || empty($newsletterApiUrl)) { return; } $endpoint = '/api/signup'; $url = $newsletterApiUrl . $endpoint ; $params = [ 'email' => $userEmail, 'list_ids' => $listIds, 'contact_language' => $userLanguage ]; $params_string = json_encode($params); $headers = [ 'Content-Type: application/json', 'Content-Length: ' . strlen($params_string) ]; $this->curl->post($url, $params, $headers); if ($this->curl->getLastStatusCode() !== 200) { throw new Exception('Error adding email ' . $userEmail . ' to newsletter app'); } } }