rendererHelper = $rendererHelper; $this->wrapper = $wrapper; $this->wp = $wp; $this->segmentsRepository = $segmentsRepository; } public function render(array $block, array $formSettings, ?int $formId = null): string { $html = ''; $fieldName = 'data[' . $this->rendererHelper->getFieldName($block) . ']'; $fieldValidation = $this->rendererHelper->getInputValidation($block, [], $formId); // Add fieldset around the checkboxes $html .= '
'; $html .= $this->rendererHelper->renderLegend($block, $formSettings); $options = (!empty($block['params']['values']) ? $block['params']['values'] : [] ); $options = array_map(function ($option) { $option['id'] = intval($option['id']); return $option; }, $options); $segmentsNamesMap = $this->getSegmentsNames($options); foreach ($options as $option) { if (!isset($option['id']) || !isset($segmentsNamesMap[$option['id']])) continue; $id = $this->wp->wpUniqueId('mailpoet_segment_'); $isChecked = (isset($option['is_checked']) && $option['is_checked']) ? 'checked="checked"' : ''; $html .= ''; } $html .= $this->rendererHelper->renderErrorsContainer($block, $formId); // End fieldset around checkboxes $html .= '
'; return $this->wrapper->render($block, $html); } private function getSegmentsNames($values): array { $ids = array_column($values, 'id'); $segments = $this->segmentsRepository->findBy(['id' => $ids]); $namesMap = []; foreach ($segments as $segment) { $namesMap[$segment->getId()] = $segment->getName(); } return $namesMap; } }