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( $widget ) { if ( in_array( 'wordpress', $widget->get_categories() ) ) { return esc_html__( 'WordPress Widgets', 'elementor' ); } $class_reflection = new \ReflectionClass( $widget ); $plugin_basename = plugin_basename( $class_reflection->getFileName() ); $plugin_directory = strtok( $plugin_basename, '/' ); $plugins_data = get_plugins( '/' . $plugin_directory ); $plugin_data = array_shift( $plugins_data ); return $plugin_data['Name'] ?? esc_html__( 'Unknown', 'elementor' ); } public function ajax_save_disabled_elements() { $this->verify_permission(); $elements = Utils::get_super_global_value( $_POST, 'widgets' ); // phpcs:ignore WordPress.Security.NonceVerification.Missing if ( empty( $elements ) ) { wp_send_json_error( esc_html__( 'No elements to save.', 'elementor' ) ); } $disabled_elements = json_decode( $elements ); if ( ! is_array( $disabled_elements ) ) { wp_send_json_error( esc_html__( 'Unexpected elements data.', 'elementor' ) ); } Options::update_disabled_elements( $disabled_elements ); do_action( 'elementor/element_manager/save_disabled_elements' ); wp_send_json_success(); } public function ajax_get_widgets_usage() { $this->verify_permission(); /** @var Usage_Module $usage_module */ $usage_module = Usage_Module::instance(); $usage_module->recalc_usage(); $widgets_usage = []; foreach ( $usage_module->get_formatted_usage( 'raw' ) as $data ) { foreach ( $data['elements'] as $element => $count ) { if ( ! isset( $widgets_usage[ $element ] ) ) { $widgets_usage[ $element ] = 0; } $widgets_usage[ $element ] += $count; } } wp_send_json_success( $widgets_usage ); } }