Sid Gifari From Gifari Industries - BD Cyber Security Team
Home
/
home
/
logoandw
/
newsletterprograms.com
/
wp-content
/
plugins
/
fluentformpro
/
src
/
classes
/
✏️
Editing: SurveyResultProcessor.php
<?php namespace FluentFormPro\classes; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } use FluentForm\App\Helpers\Helper; use FluentForm\App\Modules\Form\FormFieldsParser; use FluentForm\App\Services\Report\ReportHelper; class SurveyResultProcessor { public function getSurveyResultHtml($attributes) { $attributes = wp_parse_args($attributes, array( 'form_id' => null, 'field_name' => '', 'label' => 'yes', 'counts' => 'yes' )); if (empty($attributes['form_id'])) { return ''; } $form = wpFluent()->table('fluentform_forms')->find($attributes['form_id']); if (!$form) { return ''; } $reportingFields = $this->getReportableFields($form, $attributes['field_name']); $reports = ReportHelper::getInputReport($form->id, array_keys($reportingFields)); $formattedReports = []; foreach ($reports as $reportKey => $report) { $formattedValues = []; $options = $reportingFields[$reportKey]['options'];; foreach ($report['reports'] as $reportItem) { $reportItem['percent'] = round( ($reportItem['count'] / $report['total_entry']) * 100); if (isset($options[$reportItem['value']])) { $itemKey = $reportItem['value']; $reportItem['value'] = $options[$itemKey]; $formattedValues[$itemKey] = $reportItem; } } $shotableArray = array_intersect(array_keys($options), array_keys($formattedValues)); $formattedValues = array_replace(array_flip($shotableArray), $formattedValues); $formattedValues = array_filter($formattedValues, 'is_array'); $report['reports'] = $formattedValues; $report['label'] = $reportingFields[$reportKey]['label']; $report['options'] = $options; $report['element'] = $reportingFields[$reportKey]['element']; $formattedReports[$reportKey] = $report; } $reportHtml = '<div class="ff_poll_wrapper">'; foreach ($formattedReports as $formattedReport) { $reportHtml .= $this->getGereratedReortHtml($formattedReport, $attributes['label'], $attributes['counts'], $form); } $reportHtml .= '</div>'; $css = $this->getPollCss(); return $css.$reportHtml; } public function getReportableFields($form, $reportFieldName) { $reportFieldNames = explode(',', $reportFieldName); $fields = FormFieldsParser::getInputs($form, ['element', 'options', 'label']); $reportableFields = Helper::getReportableInputs(); $reportableItems = []; foreach ($fields as $fieldName => $field) { if ($field['element'] == 'select_country') { $field['options'] = getFluentFormCountryList(); } if (in_array($field['element'], $reportableFields) && !empty($field['options'])) { $reportableItems[$fieldName] = $field; } } if (!$reportFieldName) { return $reportableItems; } $returnItems = []; foreach ($reportFieldNames as $reportFieldName) { if (isset($reportableItems[$reportFieldName])) { $returnItems[$reportFieldName] = $reportableItems[$reportFieldName]; } } return $returnItems; } public function getGereratedReortHtml($data, $showLabel = 'yes', $showCount = 'yes', $form) { $showLabel = $showLabel == 'yes'; $showCount = $showCount == 'yes'; ob_start(); ?> <div class="ff_poll_result ff_poll_<?php echo $data['element']; ?>"> <?php if ($showLabel): ?> <div class="ff-poll-label"><?php echo $data['label']; ?></div> <?php endif; ?> <?php foreach ($data['reports'] as $report): ?> <div class="ff-poll-answer"> <div class="ff-poll-answer-label-wrap"> <div class="ff-poll-answer-percent"> <span><?php echo $report['percent']; ?>%</span> <?php if($showCount): ?> <div class="ff-poll-answer-count">(<?php echo $report['count'] . __(' votes', 'fluentformpro') ; ?>)</div> <?php endif; ?> </div> <div class="ff-poll-answer-label"><?php echo $report['value']; ?></div> </div> <div class="ff-poll-answer-bar-wrap"> <div class="ff-poll-answer-bar" style="width:<?php echo $report['percent']; ?>%;"></div> </div> </div> <?php endforeach; ?> <?php if($showCount): ?> <div class="ff-poll-total"><?php echo __('Total Votes: ', 'fluentformpro') . $data['total_entry']; ?></div> <?php endif; ?> </div> <?php return ob_get_clean(); } public function getPollCss() { ob_start(); ?> <style type="text/css"> .ff_poll_wrapper .ff_poll_result { background-color: #f7fafc; border: 1px solid #e3e8ee; margin: 26px 0; padding: 20px } .ff_poll_result .ff-poll-label { text-align: center; font-weight: 700; font-size: 18px; margin: 15px 0 0 } .ff_poll_result .ff-poll-answer { margin: 15px 0 } .ff_poll_result .ff-poll-answer-label-wrap { overflow: hidden } .ff_poll_result .ff-poll-answer-label { font-size: 16px; color: #333; margin-right: 150px } .ff_poll_result .ff-poll-answer-percent { font-size: 14px; color: #333; float: right } .ff_poll_result .ff-poll-answer-count { display: inline; color: #999 } .ff_poll_result .ff-poll-answer-bar-wrap { height: 20px; position: relative; background-color: #e9ecef; border-radius: 4px; } .ff_poll_result .ff-poll-answer-bar { position: absolute; top: 0; left: 0; height: 100%; background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); background-size: 1rem 1rem; white-space: nowrap; background-color: #007bff; transition: width .6s ease; border-radius: 4px; } .ff_poll_result .ff-poll-total { font-size: 18px; text-align: center; margin: 0 0 15px 0 } </style> <?php return ob_get_clean(); } }
💾 Save
❌ Cancel