PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.6.2
JetFormBuilder — Dynamic Blocks Form Builder v3.6.2
3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / includes / generators / num-range-manual.php
jetformbuilder / includes / generators Last commit date
base-v2.php 2 months ago base.php 2 years ago get-from-db.php 2 months ago get-from-rest-api.php 2 months ago get-from-users.php 2 months ago get-related-posts.php 2 months ago legacy-parser.php 2 months ago num-range-manual.php 2 months ago num-range.php 2 months ago registry.php 2 months ago
num-range-manual.php
149 lines
1 <?php
2 /**
3 * Numbers Range Manual Generator with schema support.
4 *
5 * @package Jet_Form_Builder\Generators
6 */
7
8 namespace Jet_Form_Builder\Generators;
9
10 // If this file is called directly, abort.
11 if ( ! defined( 'WPINC' ) ) {
12 die;
13 }
14
15 /**
16 * Num_Range_Manual class.
17 *
18 * Generates a list of numbers from min to max with specified step.
19 */
20 class Num_Range_Manual extends Base_V2 {
21
22 /**
23 * Returns generator ID.
24 *
25 * @return string
26 */
27 public function get_id() {
28 return 'num_range_manual';
29 }
30
31 /**
32 * Returns generator name.
33 *
34 * @return string
35 */
36 public function get_name() {
37 return __( 'Numbers range by manual input', 'jet-form-builder' );
38 }
39
40 /**
41 * Returns structured settings schema.
42 *
43 * Note: Uses existing attribute names (generator_numbers_*) for backward compatibility
44 * with block.json which already has these attributes defined.
45 *
46 * @return array
47 */
48 public function get_settings_schema(): array {
49 return array(
50 'generator_numbers_min' => array(
51 'type' => 'number',
52 'default' => 1,
53 'label' => __( 'Start of range', 'jet-form-builder' ),
54 'control' => 'number',
55 'step' => 0.01,
56 'help' => __( 'The minimum value of the range.', 'jet-form-builder' ),
57 ),
58 'generator_numbers_max' => array(
59 'type' => 'number',
60 'default' => 10,
61 'label' => __( 'End of range', 'jet-form-builder' ),
62 'control' => 'number',
63 'step' => 0.01,
64 'help' => __( 'The maximum value of the range.', 'jet-form-builder' ),
65 ),
66 'generator_numbers_step' => array(
67 'type' => 'number',
68 'default' => 1,
69 'label' => __( 'Step', 'jet-form-builder' ),
70 'control' => 'number',
71 'step' => 0.01,
72 'min' => 0.01,
73 'help' => __( 'The increment between each value.', 'jet-form-builder' ),
74 ),
75 );
76 }
77
78 /**
79 * Override get_values to read from direct attributes.
80 *
81 * Num_Range_Manual uses direct block attributes (generator_numbers_*)
82 * instead of generator_args, so we need special handling.
83 *
84 * @param array $args Block attributes.
85 *
86 * @return array Generated options.
87 */
88 public function get_values( $args ) {
89 // For this generator, read directly from block attributes
90 // since the schema uses existing attribute names
91 $settings = array(
92 'generator_numbers_min' => isset( $args['generator_numbers_min'] ) ? floatval( $args['generator_numbers_min'] ) : 1,
93 'generator_numbers_max' => isset( $args['generator_numbers_max'] ) ? floatval( $args['generator_numbers_max'] ) : 10,
94 'generator_numbers_step' => isset( $args['generator_numbers_step'] ) ? floatval( $args['generator_numbers_step'] ) : 1,
95 );
96
97 // Also check generator_args for new format
98 if ( ! empty( $args['generator_args'] ) && is_array( $args['generator_args'] ) ) {
99 if ( isset( $args['generator_args']['generator_numbers_min'] ) ) {
100 $settings['generator_numbers_min'] = floatval( $args['generator_args']['generator_numbers_min'] );
101 }
102 if ( isset( $args['generator_args']['generator_numbers_max'] ) ) {
103 $settings['generator_numbers_max'] = floatval( $args['generator_args']['generator_numbers_max'] );
104 }
105 if ( isset( $args['generator_args']['generator_numbers_step'] ) ) {
106 $settings['generator_numbers_step'] = floatval( $args['generator_args']['generator_numbers_step'] );
107 }
108 }
109
110 return $this->generate( $settings );
111 }
112
113 /**
114 * Returns generated options list.
115 *
116 * @param array $args Settings with generator_numbers_min, generator_numbers_max, generator_numbers_step.
117 *
118 * @return array
119 */
120 public function generate( $args ) {
121 $result = array();
122
123 $min = $args['generator_numbers_min'] ?? 1;
124 $max = $args['generator_numbers_max'] ?? 10;
125 $step = $args['generator_numbers_step'] ?? 1;
126
127 // Ensure step is positive
128 if ( $step <= 0 ) {
129 $step = 1;
130 }
131
132 if ( $min >= $max ) {
133 return $result;
134 }
135
136 for ( $i = $min; $i <= $max; $i += $step ) {
137 // Format number to remove floating point errors
138 $formatted = ( floor( $i ) == $i ) ? (int) $i : round( $i, 2 );
139
140 $result[] = array(
141 'value' => $formatted,
142 'label' => $formatted,
143 );
144 }
145
146 return $result;
147 }
148 }
149