PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 5.4
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v5.4
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
← All changes | classes/controllers/FrmApplicationsController.php +22 -51 6.335.4 View file →
@@ -13,14 +13,14 @@
13 13 *
14 14 * @return void
15 15 */
16 16 public static function menu() {
17 - $label = __( 'Applications', 'formidable' );
18 - $cap = self::get_required_capability();
17 + $label = __( 'Applications', 'formidable' );
18 + $new_pill = '<span class="frm-new-pill">NEW</span>';
19 + $cap = self::get_required_capability();
19 20
20 21 if ( ! current_user_can( $cap ) && is_callable( 'FrmProApplicationsHelper::get_custom_applications_capability' ) ) {
21 22 $custom_applications_cap = FrmProApplicationsHelper::get_custom_applications_capability();
22 -
23 23 if ( current_user_can( $custom_applications_cap ) ) {
24 24 $cap = $custom_applications_cap;
25 25 $slug = 'edit-tags.php?taxonomy=frm_application';
26 26 $callback = '';
@@ -28,12 +28,12 @@
28 28 }
29 29
30 30 if ( ! isset( $slug ) ) {
31 31 $slug = 'formidable-applications';
32 - $callback = array( self::class, 'landing_page' );
32 + $callback = array( __CLASS__, 'landing_page' );
33 33 }
34 34
35 - add_submenu_page( 'formidable', 'Formidable | ' . $label, $label, $cap, $slug, $callback );
35 + add_submenu_page( 'formidable', 'Formidable | ' . $label, $label . $new_pill, $cap, $slug, $callback );
36 36 }
37 37
38 38 /**
39 39 * Get the required capability for accessing the Applications dashboard.
@@ -72,22 +72,19 @@
72 72 *
73 73 * @return void
74 74 */
75 75 public static function get_applications_data() {
76 - FrmAppHelper::permission_check( 'frm_view_forms' );
77 - check_ajax_referer( 'frm_ajax', 'nonce' );
78 -
79 76 $view = FrmAppHelper::get_param( 'view', '', 'get', 'sanitize_text_field' );
80 77 $data = array();
81 78
82 - if ( 'applications' === $view ) {
83 - FrmAppHelper::permission_check( 'frm_edit_applications' );
84 - } else {
79 + if ( 'applications' !== $view ) {
85 80 FrmAppHelper::permission_check( self::get_required_capability() );
86 81
87 - // View may be 'applications', 'templates', or empty.
82 + // view may be 'applications', 'templates', or empty.
88 83 $data['templates'] = self::get_prepared_template_data();
89 84 $data['categories'] = FrmApplicationTemplate::get_categories();
85 + } else {
86 + FrmAppHelper::permission_check( 'frm_edit_applications' );
90 87 }
91 88
92 89 /**
93 90 * @param array $data
@@ -102,20 +99,15 @@
102 99 *
103 100 * @return array<array>
104 101 */
105 102 private static function get_prepared_template_data() {
106 - $api = new FrmApplicationApi();
107 - $applications = $api->get_api_info();
108 - $applications = array_filter( $applications, 'is_array' );
103 + $api = new FrmApplicationApi();
104 + $applications = $api->get_api_info();
105 + $applications = array_filter( $applications, 'is_array' );
106 +
109 107 $unlocked_templates = array();
110 108 $locked_templates = array();
111 -
112 - foreach ( $applications as $key => $application ) {
113 - if ( ! is_numeric( $key ) ) {
114 - // Skip "error" or any other non-numeric key.
115 - continue;
116 - }
117 -
109 + foreach ( $applications as $application ) {
118 110 if ( ! empty( $application['url'] ) ) {
119 111 $unlocked_templates[] = $application;
120 112 } else {
121 113 $locked_templates[] = $application;
@@ -122,10 +114,10 @@
122 114 }
123 115 }
124 116
125 117 $unlocked_templates = self::sort_templates( $unlocked_templates );
126 - $applications = $unlocked_templates;
127 118
119 + $applications = $unlocked_templates;
128 120 if ( current_user_can( 'administrator' ) || current_user_can( 'frm_change_settings' ) ) {
129 121 $locked_templates = self::sort_templates( $locked_templates );
130 122 $applications = array_merge( $applications, $locked_templates );
131 123 }
@@ -131,25 +123,19 @@
131 123 }
132 124
133 125 FrmApplicationTemplate::init();
134 126
135 - return array_reduce( $applications, array( self::class, 'reduce_template' ), array() );
127 + return array_reduce( $applications, array( __CLASS__, 'reduce_template' ), array() );
136 128 }
137 129
138 130 /**
139 131 * @param array $total the accumulated array of reduced application data.
140 132 * @param array $current data for the current template from the API.
141 - *
142 133 * @return array<array>
143 134 */
144 135 private static function reduce_template( $total, $current ) {
145 - $template = new FrmApplicationTemplate( $current );
146 - $js_object = $template->as_js_object();
147 -
148 - if ( $js_object ) {
149 - $total[] = $js_object;
150 - }
151 -
136 + $template = new FrmApplicationTemplate( $current );
137 + $total[] = $template->as_js_object();
152 138 return $total;
153 139 }
154 140
155 141 /**
@@ -155,15 +141,14 @@
155 141 /**
156 142 * Sort applications alphabetically.
157 143 *
158 144 * @param array<array> $applications
159 - *
160 145 * @return array<array>
161 146 */
162 147 private static function sort_templates( $applications ) {
163 148 usort(
164 149 $applications,
165 - function ( $a, $b ) {
150 + function( $a, $b ) {
166 151 return strcmp( $a['name'], $b['name'] );
167 152 }
168 153 );
169 154 return $applications;
@@ -169,21 +154,10 @@
169 154 return $applications;
170 155 }
171 156
172 157 /**
173 - * @usedby FrmAppController::admin_init().
174 - *
175 - * @since 6.8
176 - *
177 158 * @return void
178 159 */
179 - public static function load_page() {
180 - self::load_assets();
181 - }
182 -
183 - /**
184 - * @return void
185 - */
186 160 public static function load_assets() {
187 161 $plugin_url = FrmAppHelper::plugin_url();
188 162 $version = FrmAppHelper::plugin_version();
189 163
@@ -191,10 +165,8 @@
191 165 wp_enqueue_style( 'formidable-grids' );
192 166
193 167 $js_dependencies = array(
194 168 'wp-i18n',
195 - // This prevents a console error "wp.hooks is undefined" in WP versions older than 5.7.
196 - 'wp-hooks',
197 169 'formidable_dom',
198 170 );
199 171 wp_register_script( 'formidable_applications', $plugin_url . '/js/admin/applications.js', $js_dependencies, $version, true );
200 172 wp_register_style( 'formidable_applications', $plugin_url . '/css/admin/applications.css', array(), $version );
@@ -204,9 +176,8 @@
204 176 );
205 177 wp_localize_script( 'formidable_applications', 'frmApplicationsVars', $js_vars );
206 178
207 179 wp_enqueue_script( 'formidable_applications' );
208 - wp_set_script_translations( 'formidable_applications', 'formidable' );
209 180 wp_enqueue_style( 'formidable_applications' );
210 181
211 182 do_action( 'frm_applications_assets' );
212 183 }
@@ -215,9 +186,11 @@
215 186 * @return void
216 187 */
217 188 public static function dequeue_scripts() {
218 189 if ( 'formidable-applications' === FrmAppHelper::simple_get( 'page', 'sanitize_title' ) ) {
219 - FrmAppHelper::dequeue_extra_global_scripts();
190 + // Avoid extra scripts loading on applications index that aren't needed.
191 + wp_dequeue_script( 'frm-surveys-admin' );
192 + wp_dequeue_script( 'frm-quizzes-form-action' );
220 193 }
221 194 }
222 195
223 196 /**
@@ -222,12 +195,10 @@
222 195
223 196 /**
224 197 * @param string $title
225 198 * @param string $context values include 'index', 'list', and 'edit'.
226 - *
227 199 * @return void
228 200 */
229 201 public static function render_applications_header( $title, $context ) {
230 - FrmAppHelper::print_admin_banner( true );
231 202 require self::get_view_path() . 'header.php';
232 203 }
233 204 }