missing class within the plugin?
-
Dear Support,
Our site is experiencing an issue with the fluent forms plugin and the issue came up last evening without us making any changes to the site.Specifically, WordPress detected a fatal error in the admin area caused by a missing class within the plugin.
The website is loading fine on the front end and the issue seems to be limited to certain backend functionality (like editing forms or handling form validation).
Below I include two things:
- what we see when we go to https://site.com/wp-admin
- the systems error email we received.
Many thanks for looking into this.
Kind regards,
PietWP-Admin
yles’, ‘Use fluentform/numeric_styles instead of fluentform_numeric_styles.’ ); return apply_filters(‘fluentform/numeric_styles’, $data); } public static function getNumericValue($input, $formatterName) { $formatters = static::getNumericFormatters(); if (empty($formatters[$formatterName][‘settings’])) { return $input; } $settings = $formatters[$formatterName][‘settings’]; $number = floatval(str_replace($settings[‘decimal’], ‘.’, preg_replace(‘/[^-?\d’ . preg_quote($settings[‘decimal’]) . ‘]/’, ”, $input))); return number_format($number, $settings[‘precision’], ‘.’, ”); } public static function getNumericFormatted($input, $formatterName) { if (!is_numeric($input)) { return $input; } $formatters = static::getNumericFormatters(); if (empty($formatters[$formatterName][‘settings’])) { return $input; } $settings = $formatters[$formatterName][‘settings’]; return number_format($input, $settings[‘precision’], $settings[‘decimal’], $settings[‘separator’]); } public static function getDuplicateFieldNames($fields) { $fields = json_decode($fields, true); $items = $fields[‘fields’]; $inputNames = static::getFieldNamesStatuses($items); $uniqueNames = array_unique($inputNames); if (count($inputNames) == count($uniqueNames)) { return []; } return array_diff_assoc($inputNames, $uniqueNames); } protected static function getFieldNamesStatuses($fields) { $names = []; foreach ($fields as $field) { if (‘container’ == ArrayHelper::get($field, ‘element’)) { $columns = ArrayHelper::get($field, ‘columns’, []); foreach ($columns as $column) { $columnInputs = static::getFieldNamesStatuses(ArrayHelper::get($column, ‘fields’, [])); $names = array_merge($names, $columnInputs); } } else { if ($name = ArrayHelper::get($field, ‘attributes.name’)) { $names[] = $name; } } } return $names; } public static function isConversionForm($formId) { static $cache = []; if (isset($cache[$formId])) { return $cache[$formId]; } $cache[$formId] = ‘yes’ == static::getFormMeta($formId, ‘is_conversion_form’); return $cache[$formId]; } public static function getPreviewUrl($formId, $type = ”) { if (‘conversational’ == $type) { return static::getConversionUrl($formId); } elseif (‘classic’ == $type) { return site_url(‘?fluent_forms_pages=1&design_mode=1&preview_id=’ . $formId) . ‘#ff_preview’; } else { if (static::isConversionForm($formId)) { return static::getConversionUrl($formId); } } return site_url(‘?fluent_forms_pages=1&design_mode=1&preview_id=’ . $formId) . ‘#ff_preview’; } public static function getFormAdminPermalink($route, $form) { $baseUrl = admin_url(‘admin.php?page=fluent_forms’); return $baseUrl . ‘&route=’ . $route . ‘&form_id=’ . $form->id; } public static function getFormSettingsUrl($form) { $baseUrl = admin_url(‘admin.php?page=fluent_forms’); return $baseUrl . ‘&form_id=’ . $form->id . ‘&route=settings&sub_route=form_settings#basic_settings’; } private static function getConversionUrl($formId) { $meta = static::getFormMeta($formId, ‘ffc_form_settings_meta’, []); $key = ArrayHelper::get($meta, ‘share_key’, ”); $slug = apply_filters_deprecated( ‘fluentform_conversational_url_slug’, [ ‘fluent-form’ ], FLUENTFORM_FRAMEWORK_UPGRADE, ‘fluentform/conversational_url_slug’, ‘Use fluentform/conversational_url_slug instead of fluentform_conversational_url_slug.’ ); $paramKey = apply_filters(‘fluentform/conversational_url_slug’, $slug); if (‘form’ == $paramKey) { $paramKey = ‘fluent-form’; } if ($key) { return static::getFrontendFacingUrl(‘?’ . $paramKey . ‘=’ . $formId . ‘&form=’ . $key); } return static::getFrontendFacingUrl(‘?’ . $paramKey . ‘=’ . $formId); } public static function fileUploadLocations() { $locations = [ [ ‘value’ => ‘default’, ‘label’ => (‘Fluent Forms Default’, ‘fluentform’), ], [ ‘value’ => ‘wp_media’, ‘label’ => (‘Media Library’, ‘fluentform’), ], ]; $locations = apply_filters_deprecated( ‘fluentform_file_upload_options’, [ $locations ], FLUENTFORM_FRAMEWORK_UPGRADE, ‘fluentform/file_upload_options’, ‘Use fluentform/file_upload_options instead of fluentform_file_upload_options’ ); return apply_filters(‘fluentform/file_upload_options’, $locations); } public static function unreadCount($formId) { return Submission::where(‘status’, ‘unread’) ->where(‘form_id’, $formId) ->count(); } public static function getForms() { $ff_list = Form::select([‘id’, ‘title’])->orderBy(‘id’, ‘DESC’)->get(); $forms = []; if ($ff_list) { $forms[0] = esc_html__(‘Select a Fluent Forms’, ‘fluentform’); foreach ($ff_list as $form) { $forms[$form->id] = esc_html($form->title) . ‘ (‘ . $form->id . ‘)’; } } else { $forms[0] = esc_html__(‘Create a Form First’, ‘fluentform’); } return $forms; } public static function replaceBrTag($content, $with = ”) { if (is_array($content)) { foreach ($content as $key => $value) { $content[$key] = static::replaceBrTag($value, $with); } } elseif (static::hasBrTag($content)) { $content = str_replace(‘
‘, $with, $content); } return $content; } public static function hasBrTag($content) { return is_string($content) && false !== strpos($content, ‘
‘); } public static function sanitizeForCSV($content) { $formulas = [‘=’, ‘-‘, ‘+’, ‘@’, “\t”, “\r”]; $formulas = apply_filters(‘fluentform/csv_sanitize_formulas’, $formulas); if (Str::startsWith($content, $formulas)) { $content = “‘” . $content; } return $content; } public static function sanitizeOrderValue($orderType = ”) { $orderBys = [‘ASC’, ‘DESC’]; $orderType = trim(strtoupper($orderType)); return in_array($orderType, $orderBys) ? $orderType : ‘DESC’; } public static function getForm($id) { return Form::where(‘id’, $id)->first(); } public static function shouldHidePassword($formId) { $isTruncate = apply_filters_deprecated( ‘fluentform_truncate_password_values’, [ true, $formId ], FLUENTFORM_FRAMEWORK_UPGRADE, ‘fluentform/truncate_password_values’, ‘Use fluentform/truncate_password_values instead of fluentform_truncate_password_values.’ ); return apply_filters(‘fluentform/truncate_password_values’, $isTruncate, $formId) && ( (defined(‘FLUENTFORM_RENDERING_ENTRIES’) && FLUENTFORM_RENDERING_ENTRIES) || (defined(‘FLUENTFORM_RENDERING_ENTRY’) && FLUENTFORM_RENDERING_ENTRY) || (defined(‘FLUENTFORM_EXPORTING_ENTRIES’) && FLUENTFORM_EXPORTING_ENTRIES) ); } // make tabular-grid value markdown format public static function getTabularGridFormatValue( $girdData, $field, $rowJoiner = ‘
‘, $colJoiner = ‘, ‘, $type = ” ) { if (!$girdData || !$field) { return ”; } $girdRows = ArrayHelper::get($field, ‘raw.settings.grid_rows’, ”); $girdCols = ArrayHelper::get($field, ‘raw.settings.grid_columns’, ”); $value = ”; $lastRow = key(array_slice($girdData, -1, 1, true)); foreach ($girdData as $row => $column) { $_row = $row; if ($girdRows && isset($girdRows[$row])) { $row = $girdRows[$row]; } if (‘markdown’ === $type) { $value .= ‘- ‘ . $row . ‘ : ‘; } else { $value .= $row . ‘: ‘; } if (is_array($column)) { foreach ($column as $index => $item) { $_colJoiner = $colJoiner; if ($girdCols && isset($girdCols[$item])) { $item = $girdCols[$item]; } if ($index == (count($column) – 1)) { $_colJoiner = ”; } $value .= $item . $_colJoiner; } } else { if ($girdCols && isset($girdCols[$column])) { $column = $girdCols[$column]; } $value .= $column; } if ($_row != $lastRow) { $value .= $rowJoiner; } } return $value; } public static function getInputNameFromShortCode($value) { preg_match(‘/{+(.?)}/’, $value, $matches); if ($matches && false !== strpos($matches[1], ‘inputs.’)) { return substr($matches[1], strlen(‘inputs.’)); } return ”; } public static function getRestInfo() { $config = wpFluentForm(‘config’); $namespace = $config->get(‘app.rest_namespace’); $version = $config->get(‘app.rest_version’); $restUrl = rest_url($namespace . ‘/’ . $version); $restUrl = rtrim($restUrl, ‘/\’); return [ ‘base_url’ => esc_url_raw(rest_url()), ‘url’ => $restUrl, ‘nonce’ => wp_create_nonce(‘wp_rest’), ‘namespace’ => $namespace, ‘version’ => $version, ]; } public static function getLogInitiator($action, $type = ‘log’) { if (‘log’ === $type) { $title = ucwords(implode(‘ ‘, preg_split(‘/(?=[A-Z])/’, $action))); } else { $title = ucwords( str_replace( [‘fluentform/integration_notify_’, ‘fluentform_’, ‘notification_feed’, ”], [”, ”, ”, ‘ ‘], $action ) ); } return $title; } public static function getIpinfo() { return ArrayHelper::get(get_option(‘fluentform_global_form_settings’), ‘misc.geo_provider_token’); } public static function isAutoloadCaptchaEnabled() { return ArrayHelper::get(get_option(‘_fluentform_global_form_settings’), ‘misc.autoload_captcha’); } public static function maybeDecryptUrl($url) { $uploadDir = str_replace(‘/’, ‘\/’, FLUENTFORM_UPLOAD_DIR . ‘/temp’); $pattern = “/(?<={$uploadDir}\/).$/”; preg_match($pattern, $url, $match); if (!empty($match)) { $url = str_replace($match[0], Protector::decrypt($match[0]), $url); } return $url; } public static function arrayFilterRecursive($arrayItems) { foreach ($arrayItems as $key => $item) { is_array($item) && $arrayItems[$key] = self::arrayFilterRecursive($item); if (empty($arrayItems[$key])) { unset($arrayItems[$key]); } } return $arrayItems; } public static function isBlockEditor() { return defined(‘REST_REQUEST’) && REST_REQUEST && !empty($_REQUEST[‘context’]) && $_REQUEST[‘context’] === ‘edit’; } public static function resolveValidationRulesGlobalOption(&$field) { if (isset($field[‘fields’]) && is_array($field[‘fields’])) { foreach ($field[‘fields’] as &$subField) { static::resolveValidationRulesGlobalOption($subField); } } else { if (ArrayHelper::get($field, ‘settings.validation_rules’)) { foreach ($field[‘settings’][‘validation_rules’] as $key => &$rule) { if (!isset($rule[‘global’])) { $rule[‘global’] = false; } $rule[‘global_message’] = static::getGlobalDefaultMessage($key); } } } } /** * Validate form input value against database values * * @param $field array Form Field * @param $formData array From Data * @param $form object From * @param $fieldName string optional * @param $inputValue mixed optional * * @return string * Return Error message on fail. Otherwise, return empty string / public static function validateInput($field, $formData, $form, $fieldName = ”, $inputValue = []) { $error = ”; if (!$fieldName) { $fieldName = ArrayHelper::get($field, ‘name’); } if (!$fieldName) { return $error; } if (!$inputValue) { $inputValue = ArrayHelper::get($formData, $fieldName); } if ($inputValue) { $rawField = ArrayHelper::get($field, ‘raw’); if (!$rawField) { $rawField = $field; } $fieldType = ArrayHelper::get($rawField, ‘element’); $rawField = apply_filters(‘fluentform/rendering_field_data’ . $fieldType, $rawField, $form); $options = []; if (“net_promoter_score” === $fieldType) { $options = array_flip(ArrayHelper::get($rawField, ‘options’, [])); } elseif (‘ratings’ == $fieldType) { $options = array_keys(ArrayHelper::get($rawField, ‘options’, [])); } elseif (‘gdpr_agreement’ == $fieldType || ‘terms_and_condition’ == $fieldType) { $options = [‘on’]; } elseif (in_array($fieldType, [‘input_radio’, ‘select’, ‘input_checkbox’])) { if (ArrayHelper::isTrue($rawField, ‘attributes.multiple’)) { $fieldType = ‘multi_select’; } $options = array_column( ArrayHelper::get($rawField, ‘settings.advanced_options’, []), ‘value’ ); } elseif (“dynamic_field” == $fieldType) { $dynamicFetchValue = ‘yes’ == ArrayHelper::get($rawField, ‘settings.dynamic_fetch’); if ($dynamicFetchValue) { $rawField = apply_filters(‘fluentform/dynamic_field_re_fetch_result_and_resolve_value’, $rawField); } $dfElementType = ArrayHelper::get($rawField, ‘attributes.type’); if (in_array($dfElementType, [‘radio’, ‘select’, ‘checkbox’])) { $fieldType = ‘dynamic_field_options’; $options = array_column( ArrayHelper::get($rawField, ‘settings.advanced_options’, []), ‘value’ ); } } if ($options) { $options = array_map(‘sanitize_text_field’, $options); } $isValid = true; switch ($fieldType) { case ‘input_radio’: case ‘select’: case ‘net_promoter_score’: case ‘ratings’: case ‘gdpr_agreement’: case ‘terms_and_condition’: case ‘input_checkbox’: case ‘multi_select’: case ‘dynamic_field_options’: $skipValidationInputsWithOptions = apply_filters(‘fluentform/skip_validation_inputs_with_options’, false, $fieldType, $form, $formData); if ($skipValidationInputsWithOptions) { break; } if (is_array($inputValue)) { $isValid = array_diff($inputValue, $options); $isValid = empty($isValid); } else { $isValid = in_array($inputValue, $options); } break; case ‘input_number’: if (is_array($inputValue)) { $hasNonNumricValue = in_array(false, array_map(‘is_numeric’, $inputValue)); if ($hasNonNumricValue) { $isValid = false; } } else { $isValid = is_numeric($inputValue); } break; case ‘select_country’: $fieldData = ArrayHelper::get($field, ‘raw’); $data = (new SelectCountry())->loadCountries($fieldData); $validCountries = ArrayHelper::get($fieldData, ‘settings.country_list.priority_based’, []); $validCountries = array_merge($validCountries, array_keys(ArrayHelper::get($data, ‘options’))); $isValid = in_array($inputValue, $validCountries); break; case ‘repeater_field’: case ‘repeater_container’: foreach (ArrayHelper::get($rawField, ‘fields’, []) as $index => $repeaterField) { $repeaterFieldValue = array_filter(array_column($inputValue, $index)); if ($repeaterFieldValue && $error = static::validateInput($repeaterField, $formData, $form, $fieldName, $repeaterFieldValue)) { $isValid = false; break; } } break; case ‘tabular_grid’: $rows = array_keys(ArrayHelper::get($rawField, ‘settings.grid_rows’, [])); $rows = array_map(‘trim’, $rows); $submittedRows = array_keys(ArrayHelper::get($formData, $fieldName, [])); $submittedRows = array_map(‘trim’, $submittedRows); $rowDiff = array_diff($submittedRows, $rows); $isValid = empty($rowDiff); if ($isValid) { $columns = array_keys(ArrayHelper::get($rawField, ‘settings.grid_columns’, [])); $columns = array_map(‘trim’, $columns); $submittedCols = ArrayHelper::flatten(ArrayHelper::get($formData, $fieldName, [])); $submittedCols = array_map(‘trim’, $submittedCols); $colDiff = array_diff($submittedCols, $columns); $isValid = empty($colDiff); } break; default: break; } if (!$isValid) { $error = _(‘The given data was invalid’, ‘fluentform’); } } return $error; } public static function getWhiteListedFields($formId) { $whiteListedFields = [ ‘__fluent_form_embded_post_id’, ‘_fluentform’ . $formId . ‘_fluentformnonce’, ‘_wp_http_referer’, ‘g-recaptcha-response’, ‘h-captcha-response’, ‘cf-turnstile-response’, ‘__stripe_payment_method_id’, ‘__ff_all_applied_coupons’, ‘__entry_intermediate_hash’, ‘__square_payment_method_id’, ‘__square_verify_buyer_id’, ‘ct_bot_detector_event_token’, ‘ff_ct_form_load_time’ ]; return apply_filters(‘fluentform/white_listed_fields’, $whiteListedFields, $formId); } /* * Shortcode parse on validation message * @param string $message * @param object $form * @param string $fieldName * @return string / public static function shortCodeParseOnValidationMessage($message, $form, $fieldName) { // For validation message there is no entry & form data // Add ‘current_field’ name as data array to resolve {labels.current_field} shortcode if it has return ShortCodeParser::parse( $message, (object)[‘response’ => “”, ‘form_id’ => $form->id], [‘current_field’ => $fieldName], $form ); } public static function getAjaxUrl() { return apply_filters(‘fluentform/ajax_url’, admin_url(‘admin-ajax.php’)); } public static function getDefaultDateTimeFormatForMoment() { $phpFormat = get_option(‘date_format’) . ‘ ‘ . get_option(‘time_format’); $replacements = [ ‘A’ => ‘A’, // for the sake of escaping below ‘a’ => ‘a’, // for the sake of escaping below ‘B’ => ”, // Swatch internet time (.beats), no equivalent ‘c’ => ‘YYYY-MM-DD[T]HH:mm:ssZ’, // ISO 8601 ‘D’ => ‘ddd’, ‘d’ => ‘DD’, ‘e’ => ‘zz’, // deprecated since version 1.6.0 of moment.js ‘F’ => ‘MMMM’, ‘G’ => ‘H’, ‘g’ => ‘h’, ‘H’ => ‘HH’, ‘h’ => ‘hh’, ‘I’ => ”, // Daylight Saving Time? => moment().isDST(); ‘i’ => ‘mm’, ‘j’ => ‘D’, ‘L’ => ”, // Leap year? => moment().isLeapYear(); ‘l’ => ‘dddd’, ‘M’ => ‘MMM’, ‘m’ => ‘MM’, ‘N’ => ‘E’, ‘n’ => ‘M’, ‘O’ => ‘ZZ’, ‘o’ => ‘YYYY’, ‘P’ => ‘Z’, ‘r’ => ‘ddd, DD MMM YYYY HH:mm:ss ZZ’, // RFC 2822 ‘S’ => ‘o’, ‘s’ => ‘ss’, ‘T’ => ‘z’, // deprecated since version 1.6.0 of moment.js ‘t’ => ”, // days in the month => moment().daysInMonth(); ‘U’ => ‘X’, ‘u’ => ‘SSSSSS’, // microseconds ‘v’ => ‘SSS’, // milliseconds (from PHP 7.0.0) ‘W’ => ‘W’, // for the sake of escaping below ‘w’ => ‘e’, ‘Y’ => ‘YYYY’, ‘y’ => ‘YY’, ‘Z’ => ”, // time zone offset in minutes => moment().zone(); ‘z’ => ‘DDD’, ]; // Converts escaped characters. foreach ($replacements as $from => $to) { $replacements[‘\’ . $from] = ‘[‘ . $from . ‘]’; } $format = strtr($phpFormat, $replacements); return apply_filters(‘fluentform/moment_date_time_format’, $format); } public static function isDefaultWPDateEnabled() { $globalSettings = get_option(‘_fluentform_global_form_settings’); return ‘wp_default’ === ArrayHelper::get($globalSettings, ‘misc.default_admin_date_time’); } public static function isPaymentCompatible() { if (!self::hasPro()) { return true; } else { return version_compare(FLUENTFORMPRO_VERSION, FLUENTFORM_MINIMUM_PRO_VERSION, ‘>=’) ; } } /* * Determine pro payment script is compatible or not * Script is compatible if pro version is greater than or equal to 6.0.4 * * @return bool */ public static function isProPaymentScriptCompatible() { if (self::hasPro()) { return version_compare(FLUENTFORMPRO_VERSION, ‘6.0.4’, ‘>=’) ; } return false; } public static function hasPro() { return defined(‘FLUENTFORMPRO’); } public static function getLandingPageEnabledForms() { if (class_exists(\FluentFormPro\classes\SharePage\SharePage::class)) { if (method_exists(\FluentFormPro\classes\SharePage\SharePage::class, ‘getLandingPageFormIds’)) { $sharePage = new \FluentFormPro\classes\SharePage\SharePage(); return $sharePage->getLandingPageFormIds(); } } return []; } public static function sanitizeArrayKeysAndValues($values) { if (is_array($values)) { $sanitized = []; foreach ($values as $key => $value) { $trimmedKey = sanitize_text_field(trim($key)); $trimmedValue = sanitize_text_field(trim($value)); $sanitized[$trimmedKey] = $trimmedValue; } return $sanitized; } return sanitize_text_field(trim($values)); } public static function getFrontendFacingUrl($args = ”) { return home_url($args); } }
There has been a critical error on this website. Please check your site admin email inbox for instructions. If you continue to have problems, please try the support forums.Learn more about troubleshooting WordPress.
Systems Error eMail
Hii!
WordPress has a built-in feature that detects when a plugin or theme causes a fatal error on your site, and notifies you with this automated email.
In this case, WordPress caught an error with one of your plugins, Fluent Forms.
First, visit your website (https://www.site.com/) and check for any visible issues. Next, visit the page where the error was caught (https://www.site.com/wp-admin/) and check for any visible issues.
Please contact your host for assistance with investigating this issue further.
If your site appears broken and you can’t access your dashboard normally, WordPress now has a special “recovery mode”. This lets you safely login to your dashboard and investigate further.
To keep your site safe, this link will expire in 1 day. Don’t worry about that, though: a new link will be emailed to you if the error occurs again after it expires.
When seeking help with this issue, you may be asked for some of the following information:
WordPress version 6.8.1
Active theme: GeneratePress Child (version 0.1) Current plugin: Fluent Forms (version 6.0.4) PHP version 8.1.32Error Details
An error of type E_ERROR was caused in line 771 of the file /home/site/public_html/wp-content/plugins/fluentform/vendor/wpfluent/framework/src/WPFluent/Foundation/Container.php. Error message: Uncaught ReflectionException: Class “\FluentForm\App\Helpers\Helper” does not exist in /home/site/public_html/wp-content/plugins/fluentform/vendor/wpfluent/framework/src/WPFluent/Foundation/Container.php:771
Stack trace:0 /home/site/public_html/wp-content/plugins/fluentform/vendor/wpfluent/framework/src/WPFluent/Foundation/Container.php(771): ReflectionClass->__construct(‘\FluentForm\Appβ¦’)
1 /home/site/public_html/wp-content/plugins/fluentform/vendor/wpfluent/framework/src/WPFluent/Foundation/Container.php(663): FluentForm\Framework\Foundation\Container->build(‘\FluentForm\Appβ¦’, Array)
2 /home/site/public_html/wp-content/plugins/fluentform/vendor/wpfluent/framework/src/WPFluent/Foundation/FoundationTrait.php(191): FluentForm\Framework\Foundation\Container->make(‘\FluentForm\Appβ¦’)
3 /home/site/public_html/wp-content/plugins/fluentform/vendor/wpfluent/framework/src/WPFluent/Foundation/FoundationTrait.php(160): FluentForm\Framework\Foundation\Application->makeInstance(‘\FluentForm\Appβ¦’)
4 /home/site/public_html/wp-content/plugins/fluentform/vendor/wpfluent/framework/src/WPFluent/Foundation/FoundationTrait.php(106): FluentForm\Framework\Foundation\Application->parseHookHandler(Array)
5 /home/site/public_html/wp-content/plugins/fluentform/app/Hooks/filters.php(317): FluentForm\Framework\Foundation\Application->addFilter(‘fluentform/valiβ¦’, Array, 10, 5)
6 /home/site/public_html/wp-content/plugins/fluentform/vendor/wpfluent/framework/src/WPFluent/Foundation/Application.php(147): require_once(‘/home/site/β¦’)
7 /home/site/public_html/wp-content/plugins/fluentform/vendor/wpfluent/framework/src/WPFluent/Foundation/Application.php(76): FluentForm\Framework\Foundation\Application->requireCommonFiles(Object(FluentForm\Framework\Foundation\Application))
8 /home/site/public_html/wp-content/plugins/fluentform/vendor/wpfluent/framework/src/WPFluent/Foundation/Application.php(30): FluentForm\Framework\Foundation\Application->bootstrapApplication()
9 /home/site/public_html/wp-content/plugins/fluentform/boot/app.php(32): FluentForm\Framework\Foundation\Application->__construct(‘/home/site/β¦’)
10 /home/site/public_html/wp-content/plugins/fluentform/fluentform.php(29): {closure}(‘/home/site/β¦’)
11 /home/site/public_html/wp-content/plugins/fluentform/fluentform.php(30): {closure}(Object(Closure))
12 /home/site/public_html/wp-settings.php(545): include_once(‘/home/site/β¦’)
13 /home/site/public_html/wp-config.php(93): require_once(‘/home/site/β¦’)
14 /home/site/public_html/wp-load.php(50): require_once(‘/home/site/β¦’)
15 /home/site/public_html/wp-admin/admin.php(35): require_once(‘/home/site/β¦’)
16 /home/site/public_html/wp-admin/index.php(10): require_once(‘/home/site/β¦’)
17 thrown
The topic ‘missing class within the plugin?’ is closed to new replies.