nextHandler = $nextHandler; } public function handle($data) { if ($this->nextHandler) { return $this->nextHandler->handle($data); } return ['success' => true, 'message' => 'Форма обработана']; } } class b24Handler extends FormHandler { public function handle($data) { // Логика отправки в Mailchimp error_log("Отправка в b24: " . json_encode($data)); // Вызываем следующий обработчик в цепочке return parent::handle($data); } } class zohoHandler extends FormHandler { public function handle($data) { // Логика отправки в HubSpot error_log("Отправка в Zoho: " . json_encode($data)); return parent::handle($data); } } class mindboxHandler extends FormHandler { public function handle($data) { // Отправка в стандартный обработчик (например, email) error_log("Отправка в mindBox: " . json_encode($data)); // if (is_string($data)) { // parse_str($data, $parsedData); // Преобразуем строку в массив // $data = $parsedData; // } // $url = 'https://api.mindbox.ru/v3/operations/async?endpointId=cosmopet.Website&operation=DobavleniePolzovatelyaSSajta'; // $data = array( // "email" => $data['email'], // "subscriptions" => array( // array( // "pointOfContact"=> "Email" // ), // ), // ); // $data_string = json_encode(array("customer" =>$data)); // $ch = curl_init($url); // curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); // curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // $result = curl_exec($ch); // curl_close($ch); return parent::handle($data); } } class emailHandler extends FormHandler { public function handle($data) { $to = 'pro@cosmopet.shop'; // Укажите email, на который нужно отправить данные $subject = 'Форма обработана'; // Тема письма $message = $this->formatData($data); // Форматируем данные $headers = ['Content-Type: text/plain; charset=UTF-8']; // Заголовки письма // Отправляем письмо wp_mail($to, $subject, $message, $headers); // Вызываем следующий обработчик в цепочке return parent::handle($data); } private function formatData($data) { if (is_string($data)) { parse_str($data, $parsedData); // Преобразуем строку в массив $data = $parsedData; } $formattedMessage = "Данные формы:\n\n"; // Проходим по всем полям данных и добавляем их в сообщение foreach ($data as $key => $value) { $formattedMessage .= sprintf("%s: %s\n", $key, $value); } return $formattedMessage; } } class FormHandlerFactory { public static function getHandler(array $enabledHandlers) { $handler = null; if (in_array('email', $enabledHandlers)) { $handler = new emailHandler($handler); } if (in_array('zoho', $enabledHandlers)) { $handler = new zohoHandler($handler); } if (in_array('mindbox', $enabledHandlers)) { $handler = new mindboxHandler($handler); } if (in_array('b24', $enabledHandlers)) { $handler = new b24Handler($handler); } return $handler ?: new DefaultHandler(); } } ?>