File "FrmProSimpleBlocksController.php"
Full path: /home/bud/public_html/swamp/wp-admin/wp-content/plugins/formidable-pro/classes/controllers/FrmProSimpleBlocksController.php
File size: 4.29 KB
MIME-type: text/x-php
Charset: utf-8
<?php
if ( ! defined( 'ABSPATH' ) ) {
die( 'You are not allowed to call this page directly.' );
}
class FrmProSimpleBlocksController {
/**
* Adds View values to info sent to block JS
*
* @param $script_vars
*
* @return mixed
*/
public static function block_editor_assets() {
$version = FrmAppHelper::plugin_version();
wp_register_script(
'formidable-view-selector',
FrmProAppHelper::plugin_url() . '/js/frm_blocks.js',
array( 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-components', 'wp-block-editor' ),
$version,
true
);
$script_vars = array(
'views' => self::get_views_options(),
'show_counts' => FrmProDisplaysHelper::get_show_counts(),
'view_options' => FrmProDisplaysHelper::get_frm_options_for_views( 'limit' ),
'name' => FrmAppHelper::get_menu_name() . ' ' . __( 'Views', 'formidable-pro' ),
'calc' => self::get_calc_forms(),
);
wp_localize_script( 'formidable-view-selector', 'formidable_view_selector', $script_vars );
if ( function_exists( 'wp_set_script_translations' ) ) {
wp_set_script_translations( 'formidable-view-selector', 'formidable-pro', FrmProAppHelper::plugin_path() . '/languages' );
}
}
/**
* Returns an array of Views options with name as the label and the id as the value, sorted by label
*
* @return array
*/
private static function get_views_options() {
if ( is_callable( 'FrmViewsSimpleBlocksController::get_views_options' ) ) {
return FrmViewsSimpleBlocksController::get_views_options();
}
return array();
}
/**
* Returns a filtered list of form options with the name as label and the id as value, sorted by label.
* Get all total fields and calculated fields.
*
* @return array
*
* @since 4.05
*/
private static function get_calc_forms() {
$where = array(
'or' => 1,
'type' => 'total',
array(
'field_options like' => '"calc";s:',
'field_options not like' => '"calc";s:0:',
),
);
$calc_forms = FrmDb::get_col( 'frm_fields', $where, 'form_id' );
$calc_forms = array_unique( (array) $calc_forms );
return self::get_forms( $calc_forms );
}
private static function get_forms( $ids ) {
$forms = FrmForm::getAll(
array(
'is_template' => 0,
'status' => 'published',
'id' => $ids,
),
'name'
);
return self::set_form_options( $forms );
}
/**
* Returns an array for a form with name as label and id as value
*
* @param $form
*
* @return array
*
* @since 4.05
*/
private static function set_form_options( $forms ) {
$list = array();
$parent = array();
foreach ( $forms as $form ) {
if ( isset( $form->parent_form_id ) && ! empty( $form->parent_form_id ) ) {
$parent[] = $form->parent_form_id;
} else {
$list[ $form->id ] = array(
'label' => $form->name,
'value' => $form->id,
);
}
}
if ( ! empty( $parent ) ) {
$parent = array_diff( $parent, array_keys( $list ) );
if ( ! empty( $parent ) ) {
$parents = self::get_forms( $parent );
$list += $parents;
}
}
$list = array_values( $list );
return $list;
}
/**
* Registers simple View block
*/
public static function register_simple_view_block() {
if ( ! is_callable( 'register_block_type' ) ) {
return;
}
if ( is_admin() ) {
// register back-end scripts
add_action( 'enqueue_block_editor_assets', 'FrmProSimpleBlocksController::block_editor_assets' );
}
register_block_type(
'formidable/calculator',
array(
'attributes' => array(
'formId' => array(
'type' => 'string',
),
'title' => array(
'type' => 'string',
),
'description' => array(
'type' => 'string',
),
'minimize' => array(
'type' => 'string',
),
'className' => array(
'type' => 'string',
),
),
'editor_style' => 'formidable',
'editor_script' => 'formidable-form-selector',
'render_callback' => 'FrmSimpleBlocksController::simple_form_render',
)
);
}
/**
* Renders a View given the specified attributes.
*
* @deprecated 4.09
* @param $attributes
* @return string
*/
public static function simple_view_render( $attributes ) {
return FrmProDisplaysController::deprecated_function( __METHOD__, 'FrmViewsSimpleBlocksController::simple_view_render', $attributes );
}
}