settings = wpFluent()->table('fluentform_form_meta') ->where('form_id', $formId) ->where('meta_key', 'slack') ->first(); $this->settings = $this->settings ? json_decode($this->settings->value, true) : []; return ArrayHelper::get($this->settings, 'enabled', false); } /** * Handle slack notifier. * * @param $submissionId * @param $formData * @param $form */ public function handle($submissionId, $formData, $form) { if (!$this->shouldApply($form->id)) { return; } $inputs = FormFieldsParser::getEntryInputs($form); $labels = FormFieldsParser::getAdminLabels($form, $formFields); $formData = FormDataParser::parseData((object) $formData, $inputs, $form->id); $title = __("New submission on ".$form->title, 'fluentform'); $fields = []; foreach ($formData as $attribute => $value) { $value = str_replace('&', '&', $value); $value = str_replace('<', '<', $value); $value = str_replace('>', ">", $value); $fields[] = [ 'title' => $labels[$attribute], 'value' => $value, 'short' => false ]; } $slackHook = ArrayHelper::get($this->settings, 'webhook'); $titleLink = admin_url('admin.php?page=fluent_forms&form_id=' .$form->id .'&route=entries#/entries/' .$submissionId ); $body = [ 'payload' => json_encode([ 'attachments' => [ [ 'color' => '#0078ff', 'fallback' => $title, 'title' => $title, 'title_link' => $titleLink, 'fields' => $fields, 'footer' => 'fluentform', 'ts' => current_time('timestamp') ] ] ]) ]; wp_remote_post($slackHook, [ 'method' => 'POST', 'timeout' => 30, 'redirection' => 5, 'httpversion' => '1.0', 'blocking' => false, 'headers' => [], 'body' => $body, 'cookies' => [] ]); } /** * Invoke slack notifier. * * @param $submissionId * @param $formData * @param $form */ public static function notify($submissionId, $formData, $form) { (new static)->handle($submissionId, $formData, $form); } }