_within']) && $block['params']['label_within'] ) { return $html; } $automationId = null; if (in_array($block['id'], ['email', 'last_name', 'first_name'], true)) { $automationId = 'data-automation-id="form_' . $block['id'] . '_label" '; } if (isset($formSettings['id'])) { $forId = 'for="form_' . $block['id'] . '_' . $formSettings['id'] . '" '; } if ( isset($block['params']['label']) && strlen(trim($block['params']['label'])) > 0 ) { $labelClass = 'class="mailpoet_' . $block['type'] . '_label" '; $html .= ''; } return $html; } public function renderLegend(array $block, array $formSettings): string { $html = ''; if ( isset($block['params']['hide_label']) && $block['params']['hide_label'] ) { return $html; } if ( isset($block['params']['label']) && strlen(trim($block['params']['label'])) > 0 ) { // Use _label suffix for backward compatibility $labelClass = 'class="mailpoet_' . $block['type'] . '_label" '; $html .= 'renderFontStyle($formSettings, $block['styles'] ?? []) . '>'; $html .= static::getFieldLabel($block); if (static::getFieldIsRequired($block)) { $html .= ' '; } $html .= ''; } return $html; } public function renderFontStyle(array $formSettings, array $styles = []) { $rules = []; if (isset($formSettings['fontSize'])) { $rules[] = 'font-size: ' . $formSettings['fontSize'] . (is_numeric($formSettings['fontSize']) ? "px;" : ";"); $rules[] = 'line-height: 1.2;'; } if (isset($styles['bold']) && $styles['bold']) { $rules[] = 'font-weight: bold;'; } return $rules ? 'style="' . $this->wp->escAttr(implode("", $rules)) . '"' : ''; } public function renderInputPlaceholder(array $block): string { $html = ''; // if the label is displayed as a placeholder, if ( isset($block['params']['label_within']) && $block['params']['label_within'] ) { $label = $this->wp->escAttr(static::getFieldLabel($block)); if (static::getFieldIsRequired($block)) { $label .= ' *'; } // Some screen readers don't read placeholders, so we need to add aria-label // but to prevent reading it twice, they need to be the same (including *) $html .= ' placeholder="' . $label . '"'; $html .= ' aria-label="' . $label . '" '; } return $html; } // return field name depending on block data public function getFieldName(array $block = []): string { $blockId = $this->wp->escAttr($block['id']); if ((int)$blockId > 0) { return 'cf_' . $blockId; } elseif (isset($block['params']['obfuscate']) && !$block['params']['obfuscate']) { return $blockId; } else { return $this->fieldNameObfuscator->obfuscate($block['id']);//obfuscate field name for spambots } } public function getFieldLabel(array $block = []): string { return (isset($block['params']['label']) && strlen(trim($block['params']['label'])) > 0) ? $this->wp->escHtml(trim($block['params']['label'])) : ''; } public function getFieldValue($block = []) { return (isset($block['params']['value']) && strlen(trim($block['params']['value'])) > 0) ? $this->wp->escAttr(trim($block['params']['value'])) : ''; } public function getFieldIsRequired($block = []): bool { return (isset($block['params']['required']) && strlen(trim($block['params']['required'])) > 0) ? !empty($block['params']['required']) : false; } public function getInputModifiers(array $block = []): string { $modifiers = []; if (isset($block['params']['readonly']) && $block['params']['readonly']) { $modifiers[] = 'readonly'; } if (isset($block['params']['disabled']) && $block['params']['disabled']) { $modifiers[] = 'disabled'; } return join(' ', $modifiers); } public function escapeShortCodes(?string $value): ?string { if ($value === null) { return null; } return preg_replace_callback('/' . $this->wp->getShortcodeRegex() . '/s', function ($matches) { return str_replace(['[', ']'], ['[', ']'], $matches[0]); }, $value); } public function renderErrorsContainer(array $block = [], ?int $formId = null): string { $errorContainerClass = $this->getErrorsContainerClass($block, $formId); return ''; } private function getErrorsContainerClass(array $block = [], ?int $formId = null): string { $validationId = $block['validation_id'] ?? null; if (!$validationId) { $validationId = $this->wp->escAttr($block['id']); if ($formId) { $validationId .= '_' . $formId; } } return 'mailpoet_error_' . $validationId; } private function translateValidationErrorMessage(string $validate): string { switch ($validate) { case 'email': return __('This value should be a valid email.', 'mailpoet'); case 'url': return __('This value should be a valid url.', 'mailpoet'); case 'number': return __('This value should be a valid number.', 'mailpoet'); case 'integer': return __('This value should be a valid integer.', 'mailpoet'); case 'digits': return __('This value should be digits.', 'mailpoet'); case 'alphanum': return __('This value should be alphanumeric.', 'mailpoet'); default: return __('This value seems to be invalid.', 'mailpoet'); } } }