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