JFIF $ d d 7 * Z qn )ZP 0 !1 A "#a$2Qr D8 a Ri [f \m I ykI w0 c u F c Rı?lO7 к _f˓ [C $殷WF< _W ԣ s Kc ëI zyQy /_LK ℂ ;C",p F A : /] =H ~ , l s / 9 ć: [=/#f ; ) x { ٛE Q )~ = 𘙲r*2~ a _V = ' ku m F D } KYYC )( { * g& f `툪 r y ` = ^ c J. I ]( * `wq 1dđ #̩ ͑ 0 ; H ] u 搂 @:~ ו K L N s h } O I R* 8 :2 ! lD JV o ( 3 = M ( z Ȱ+i *N A r6K n S l ) ! J J Ӂ* % ݉?|D } d5: eP0 R; {$X' x F @ .ÊB {,WJ uQ ɲRI ;9 Q E琯 6 2fT .DU J ;*c P A\IL Nj! J ۱+ O\ ͔ ] ޒ S J ȧ c%A N ol ՎprU L Zԛe r E2= X D Xg VQeӓ k y P7 U* o m Q I s ,K `) 6\G3t?pgjr m ۛجw luGt f h 9uyP 0D;Uڽ"OXl i f $ ) &|ML 0 Z rm1 [ H XP l P R0 'G=i 2N +0 e 2 ]] 9 VT P O 7 h(F * 癈 ' = Q VZD F,d ߬ ~ T X G[ `le 69C R(!S2! P < 0 x < !1AQ "Raq 02Br #S CTb ? Ζ "]mH5WR 7 k.ۛ ! } Q~ + yԏ z |@ T20 S~ K e k *zF f^2X *( @ 8 r ? C I uI|֓>^Ex LgNU Y+{.R Ѫ τV YT D I 6 2 '8Y2 7'\T P.6 d &˦ @V q i |8 -O Ε ] ʔ U= T L 8= ;6c | !qfF3 a ů& ~$ l} 'NW U s$U k^S V : U#6w + +s &r+n ڐ { @ 29gL u " T Ù M=6 (^ "7 r}=6Yݾ lC u hquymp Ǧ G jhs ǜNl ɻ} o 7 #S6 a w 4 ! OS r D 5 7 % | ?x> L | / nD 6?/8 w # [ ) L 7 +6〼T A T g ! %5 Mm Z /c -{1_Je "| ^$ 'O & ޱմ < H vNqϡQ$ < 6 &Nݛ ֨tǻN (9 n ru~'όN sMG& ,uH Kw *Ī 5@ u6 BԒ i YN * f 0 _ GhKW u lT <nj- 0{ M L~ | /a v\ E = ?1 \ɟuq Ђ Y O a K ޡP q $ H8o Q˼EV ~ k 0 h' L Pp M -M" m^ !6l nմ 쮝C U T . ! :vMǨb h ډ Vc r @~p # !1QAa q ? AL0L x LU 4 d ; x " 16ad0 7.\ߋ 0 = P l v/ " c A Ay A|2pO8"d MV #1] = \ " ˡ ] k v I9 d ۓ & q ) ǐq E ꞅ v "P )q X &Q З non]я u ג./ ; gZ$ M QР 2M ]h ni 0 P $ێ 3CɏGjώy : m c # S_ l@ '_ \m|C 2`K _ 1 cIvGc $? PCQ S+D ? K aײ k Fr b 8 ύ NEدg ĝ U 3 6 #Ik+ v { v i ( ވ ? a e) X xy/*@Q Ǽ Ծ ) $ IWO l c G; !i k{ gOŀ L ('x T rb $ w) R $ & N1E td U3Uȉ1p M"N* (DNy d96.(jQ) X 5 c QɎMy W ? Q *!R > 6=7)Xj 5`J ] e 8%t ! + ' ! 1Q 5 !1 AQaq ё #2 "0BRb ? G t^ ## .l lQ T $ v , ,m 㵜5u bV =sY+ @d { N ! dn O < .- B; _w J t 6;Q Jd. Q c%p{ 1 ,sND dF H I0 Гo X ш e黅X ۢ F :)[ F G X ƹ / w _c MeD ,ʡc c . W D tA $ j@ : ) - #u c1< @ۗ9F ) KJ- hpP] _ x [ q B lb p ʖ w q " LFGd ƶ * s +ډ_Zc " ? % t[I P 6 J ]# =ɺ V v v CGs Gh1 > )6 |e y ? L ӣ m,4 G W Ui ` ] uJVo VDG< SB 6ϏQ @ TiU l y O U 0 kfV ~ ~}S Z @ *WU Ui ## ; s /[ = ! 7}" W N ] ' (L ! ~ y5 g9T̅J kbM' +s :S +B) v @ M j e C f j E 0 Y\Qn z G 1 д~ W o{T 9?` Rm yhsy3 !HAD ] m c1 ~ 2 L S u7x T ;j$ `} 4-> L# vzŏ I L S ֭ T { r jGK C ; b pU= - ` Bs K. S F w4 M q] Z dH S 0 ) tLg
<?php
/**
* Forminator Admin Data
*
* @package Forminator
*/
/**
* Class Forminator_Admin_Data
*
* @since 1.0
*/
class Forminator_Admin_Data {
/**
* Forminator Instance
*
* @var Forminator|null
*/
public $core = null;
/**
* Current Nonce
*
* @since 1.2
* @var string
*/
private $_nonce = '';
/**
* Forminator_Admin_Data constructor.
*
* @since 1.0
*/
public function __construct() {
$this->core = Forminator::get_instance();
}
/**
* Combine Data and pass to JS
*
* @return array
* @since 1.0
*/
public function get_options_data() {
$data = $this->admin_js_defaults();
$data = apply_filters( 'forminator_data', $data );
$data['fields'] = forminator_get_fields_sorted( 'position', SORT_ASC );
$data['fieldsPro'] = forminator_get_pro_fields();
$data['default_required_messages'] = Forminator_Field::$default_required_messages;
$data['passwordStrengthMessages'] = Forminator_Password::get_strength_messages();
return $data;
}
/**
* Generate nonce
*
* @since 1.2
*/
public function generate_nonce() {
$this->_nonce = wp_create_nonce( 'forminator_load_google_fonts' );
}
/**
* Get current generated nonce
*
* @return string
* @since 1.2
*/
public function get_nonce() {
return $this->_nonce;
}
/**
* Return published pages
*
* @return array
*/
public static function get_pages() {
$cached_pages = wp_cache_get( 'forminator_cached_pages', 'forminator-cache' );
if ( false !== $cached_pages ) {
return $cached_pages;
}
global $wpdb;
$sql = "SELECT ID, post_title FROM {$wpdb->posts} WHERE post_type = 'page' AND post_status = 'publish' ORDER BY post_title ASC";
$pages = $wpdb->get_results( $sql ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery
// Cache the result.
wp_cache_set( 'forminator_cached_pages', $pages, 'forminator-cache' );
return $pages;
}
/**
* Default Admin properties
*
* @return array
* @since 1.0
*/
public function admin_js_defaults() {
// Generate addon nonce.
Forminator_Integration_Admin_Ajax::get_instance()->generate_nonce();
$id = filter_input( INPUT_GET, 'id', FILTER_VALIDATE_INT );
$user = wp_get_current_user();
$dashboard = class_exists( 'WPMUDEV_Dashboard' );
$extension_pack = class_exists( 'Forminator_Extension_Pack' );
return array(
'ajaxUrl' => forminator_ajax_url(),
'adminUrl' => admin_url(),
'siteUrl' => site_url(),
'akismetEnabled' => is_plugin_active( 'akismet/akismet.php' ),
'application' => '',
'is_touch' => wp_is_mobile(),
'dashboardUrl' => menu_page_url( 'forminator', false ),
'formEditUrl' => menu_page_url( 'forminator-cform-wizard', false ),
'noWrongEditUrl' => menu_page_url( 'forminator-nowrong-wizard', false ),
'knowledgeEditUrl' => menu_page_url( 'forminator-knowledge-wizard', false ),
'pollEditUrl' => menu_page_url( 'forminator-poll-wizard', false ),
'settingsUrl' => menu_page_url( 'forminator-settings', false ),
'integrationsUrl' => menu_page_url( 'forminator-integrations', false ),
'addonsUrl' => menu_page_url( 'forminator-addons', false ),
'hasCaptcha' => forminator_has_captcha_settings(),
'hasV2Captcha' => forminator_has_v2_captcha_settings(),
'hasV2InvisibleCaptcha' => forminator_has_v2_invisible_captcha_settings(),
'hasV3Captcha' => forminator_has_v3_captcha_settings(),
'hasHCaptcha' => forminator_has_hcaptcha_settings(),
'hasTurnstile' => forminator_has_turnstile_settings(),
'loadCaptcha' => wp_create_nonce( 'forminator_load_captcha_settings' ),
'stripeTestReady' => forminator_is_stripe_mode_ready( 'test' ),
'stripeLiveReady' => forminator_is_stripe_mode_ready( 'live' ),
'formNonce' => $this->get_nonce(),
'resetTrackingDataNonce' => wp_create_nonce( 'forminator_reset_tracking_data' ),
'createNonce' => wp_create_nonce( 'forminator_create_module' ),
'previewNonce' => wp_create_nonce( 'forminator_load_module_preview' ),
'updateLivePreviewNonce' => wp_create_nonce( 'forminator_update_live_preview' ),
'searchNonce' => wp_create_nonce( 'forminator_search_emails' ),
'gFontNonce' => wp_create_nonce( 'forminator_load_google_fonts' ),
'dismissNonce' => wp_create_nonce( 'forminator_dismiss_notification' ),
'dismissNoticeNonce' => wp_create_nonce( 'forminator_dismiss_notice' ),
'formProcessNonce' => forminator_is_user_allowed( 'forminator-cform' ) ? wp_create_nonce( 'forminator_form_request' ) : '',
'formExportNonce' => wp_create_nonce( 'forminator_popup_export_form' ),
'migrateStripeNonce' => forminator_is_user_allowed( 'forminator-cform' ) ? wp_create_nonce( 'forminator_migrate_stripe' ) : '',
'pollProcessNonce' => forminator_is_user_allowed( 'forminator-poll' ) ? wp_create_nonce( 'forminator_poll_request' ) : '',
'pollExportNonce' => wp_create_nonce( 'forminator_popup_export_poll' ),
'quizProcessNonce' => forminator_is_user_allowed( 'forminator-quiz' ) ? wp_create_nonce( 'forminator_quiz_request' ) : '',
'quizExportNonce' => wp_create_nonce( 'forminator_popup_export_quiz' ),
'cloneNonce' => wp_create_nonce( 'forminator-nonce-clone-' . $id ),
'load_cloud_templates' => wp_create_nonce( 'forminator_load_cloud_templates' ),
'save_cloud_templates' => wp_create_nonce( 'forminator_save_cloud_templates' ),
'create_form_nonce' => wp_create_nonce( 'forminator_create_form_from_template' ),
'disconnect_hub_nonce' => wp_create_nonce( 'forminator_disconnect_from_hub' ),
'templates_per_page' => apply_filters( 'forminator_templates_per_page', 100 ),
'addons_enabled' => Forminator::is_addons_feature_enabled(),
'pluginUrl' => forminator_plugin_url(),
'imagesUrl' => forminator_plugin_url() . 'assets/images',
'addonNonce' => Forminator_Integration_Admin_Ajax::get_instance()->get_nonce(),
'countries' => forminator_get_countries_list(),
'userList' => forminator_list_users(),
'variables' => forminator_get_vars(),
'variablesForHiddenField' => forminator_get_vars( true ),
'payment_variables' => forminator_get_payment_vars(),
'stripe_subscription_variables' => forminator_get_stripe_subscription_vars(),
'maxUpload' => forminator_get_max_upload(),
'captchaLangs' => forminator_get_captcha_languages(),
'erasure' => get_option( 'forminator_enable_erasure_request_erase_form_submissions', false ),
'retain_number' => get_option( 'forminator_retain_submissions_interval_number', 0 ),
'retain_unit' => get_option( 'forminator_retain_submissions_interval_unit', 'days' ),
'poll_ip_retain_number' => get_option( 'forminator_retain_votes_interval_number', 0 ),
'poll_ip_retain_unit' => get_option( 'forminator_retain_votes_interval_unit', 'days' ),
'submissions_ip_retain_number' => get_option( 'forminator_retain_poll_submissions_interval_number', 0 ),
'submissions_ip_retain_unit' => get_option( 'forminator_retain_poll_submissions_interval_unit', 'days' ),
'submissions_quiz_retain_number' => get_option( 'forminator_retain_quiz_submissions_interval_number', 0 ),
'submissions_quiz_retain_unit' => get_option( 'forminator_retain_quiz_submissions_interval_unit', 'days' ),
'skip_pro_notice' => get_option( 'forminator_skip_pro_notice', false ),
'fileExts' => forminator_get_ext_types(),
'version' => FORMINATOR_VERSION,
'showDocLink' => forminator_is_show_documentation_link(),
'showBranding' => forminator_is_show_branding(),
'currencies' => forminator_currency_list(),
'ppCurrencies' => forminator_pp_currency_list(),
'postTypeList' => forminator_post_type_list(),
'postCategories' => forminator_post_categories(),
'isPro' => FORMINATOR_PRO,
'isHubConnected' => false,
'dashboardPlugin' => $dashboard,
'isWPMUDEVloggedIn' => $dashboard && WPMUDEV_Dashboard::$api->get_key(),
'expiredMembership' => $dashboard && forminator_get_wpmudev_membership() === 'expired',
'extensionPack' => $extension_pack,
'userRoles' => forminator_get_accessible_user_roles(),
'pages' => self::get_pages(),
'hasPayPal' => forminator_has_paypal_settings(),
'pollAnswerColors' => forminator_get_poll_chart_colors(),
'isMainSite' => forminator_is_main_site(),
'isSubdomainNetwork' => forminator_is_subdomain_network(),
'showFieldSettings' => get_option( 'forminator_editor_settings', 'true' ),
'hasStripePro' => defined( 'FORMINATOR_STRIPE_ADDON' ) && class_exists( 'Forminator_Stripe_Addon' ),
'stripeForms' => $this->get_forms_by_field_type( 'stripe' ),
'paypalForms' => $this->get_forms_by_field_type( 'paypal' ),
'form_modules' => $this->get_modules( 'get_forms' ),
'quiz_modules' => $this->get_modules( 'get_quizzes' ),
'poll_modules' => $this->get_modules( 'get_polls' ),
'pdfAddonActive' => class_exists( 'Forminator_PDF_Addon' ),
'wpmudevMembership' => forminator_get_wpmudev_membership(), // 'free'
'pdfExtensionsEnabled' => $this->pdf_extensions_enabled(),
'isPDFAddonCompatible' => $this->is_pdf_addon_compatible(),
'userPermissions' => $user->get_role_caps(),
'manage_forminator_templates' => forminator_is_user_allowed( 'forminator-templates' ),
'cloudDisabled' => forminator_cloud_templates_disabled(),
'globalTracking' => forminator_global_tracking(),
'hasSavedChanges' => is_int( $id ) && Forminator_Base_Form_Model::get_temp_settings( $id ),
'saveDelay' => apply_filters( 'forminator_save_delay', 1500 ),
'autoSave' => get_option( 'forminator_auto_saving', true ),
'addonsDisabled' => forminator_addons_disabled(),
'abandonmentDisabled' => forminator_form_abandonment_disabled(),
'formColorSettings' => Forminator_Custom_Form_Admin::get_default_color_settings(),
'install_addon' => filter_input( INPUT_GET, 'forminator_install_addon', FILTER_VALIDATE_INT ),
'open_addon' => filter_input( INPUT_GET, 'forminator_open_addon', FILTER_VALIDATE_INT ),
'EXTENSION_PACK_PID' => Forminator_Admin_Addons_Page::EXTENSION_PACK_PID,
'isUserRegistrationEnabled' => forminator_is_user_registration_enabled(),
'isSiteRegistrationEnabled' => forminator_is_site_registration_enabled(),
'networkAdminUrl' => network_admin_url(),
'isMultisite' => is_multisite(),
'shareFeedbackNonce' => wp_create_nonce( 'forminator_share_feedback' ),
'feedbackDisabled' => forminator_feedback_disabled(),
'isTrackingActive' => Forminator_Core::is_tracking_active(),
);
}
/**
* Get form by field
*
* @param string $type Field type.
*
* @return array
*/
public function get_forms_by_field_type( $type ) {
$field_forms = array();
$forms = Forminator_Form_Model::model()->get_models( 99 );
if ( ! empty( $forms ) ) {
foreach ( $forms as $form ) {
if ( ! empty( $form->fields ) ) {
foreach ( $form->fields as $f => $field ) {
$field_array = $field->to_formatted_array();
$field_type = isset( $field_array['type'] ) ? $field_array['type'] : '';
if ( $type === $field_type || ( 'stripe' === $type && 'stripe-ocs' === $field_type ) ) {
$field_forms[ $form->id ] = isset( $form->settings['formName'] ) ? $form->settings['formName'] : '';
}
}
}
}
}
return $field_forms;
}
/**
* Print forms select
*
* @param string $method Method time.
*
* @return array
* @since 1.0
*/
public function get_modules( $method ) {
$modules = array();
$modules_data = Forminator_API::$method( null, 1, 999, 'publish' );
if ( ! empty( $modules_data ) ) {
foreach ( $modules_data as $m => $module ) {
$module = (array) $module;
$title = forminator_get_form_name( $module['id'] );
if ( mb_strlen( $title ) > 25 ) {
$title = mb_substr( $title, 0, 25 ) . '...';
}
$modules[ $m ]['id'] = $module['id'];
$modules[ $m ]['name'] = $title;
}
}
return $modules;
}
/**
* Check MPDF extensions.
*
* @since 1.25
*
* @return bool
*/
public function pdf_extensions_enabled() {
if ( function_exists( 'forminator_pdf_extensions_enabled' ) ) {
return forminator_pdf_extensions_enabled();
}
return false;
}
/**
* Check if PDF addon is compatible.
*
* @since 1.51
*
* @return bool
*/
public function is_pdf_addon_compatible() {
if ( class_exists( 'Forminator_PDF_Addon' ) ) {
$pdf_addon = Forminator_PDF_Addon::get_instance();
if ( method_exists( $pdf_addon, 'is_supported_version' ) ) {
return $pdf_addon->is_supported_version();
}
}
return false;
}
}