styleUtils = $styleUtils; $this->settings = $settings; $this->blocksRenderer = $blocksRenderer; $this->customFonts = $customFonts; } public function renderStyles(array $form, string $prefix, string $displayType): string { $this->customFonts->enqueueStyle(); $html = '.mailpoet_hp_email_label{display:none!important;}'; // move honeypot field out of sight $html .= $this->styleUtils->prefixStyles($this->getCustomStyles($form), $prefix); $html .= strip_tags($this->styleUtils->renderFormSettingsStyles($form, $prefix, $displayType)); return $html; } public function renderHTML(array $form = []): string { if (isset($form['body']) && !empty($form['body']) && is_array($form['settings'])) { return $this->renderBlocks($form['body'], $form['settings'] ?? []); } return ''; } public function getCustomStyles(array $form = []): string { if (isset($form['styles']) && strlen(trim($form['styles'])) > 0) { return strip_tags($form['styles']); } else { return FormTemplate::DEFAULT_STYLES; } } public function renderBlocks(array $blocks = [], array $formSettings = [], bool $honeypotEnabled = true, bool $captchaEnabled = true): string { // add honeypot for spambots $html = ($honeypotEnabled) ? $this->renderHoneypot() : ''; foreach ($blocks as $key => $block) { if ($captchaEnabled && $block['type'] === FormEntity::SUBMIT_BLOCK_TYPE && $this->settings->get('captcha.type') === Captcha::TYPE_RECAPTCHA ) { $html .= $this->renderReCaptcha(); } if (in_array($block['type'], [FormEntity::COLUMN_BLOCK_TYPE, FormEntity::COLUMNS_BLOCK_TYPE])) { $blocks = $block['body'] ?? []; $html .= $this->blocksRenderer->renderContainerBlock($block, $this->renderBlocks($blocks, $formSettings, false)) . PHP_EOL; } else { $html .= $this->blocksRenderer->renderBlock($block, $formSettings) . PHP_EOL; } } return $html; } private function renderHoneypot(): string { return ''; } private function renderReCaptcha(): string { $siteKey = $this->settings->get('captcha.recaptcha_site_token'); return '
'; } }