cleanup_activated_addons(); $this->addons_list = forminator_get_registered_addons_list(); $this->addons_list_grouped_by_connected = forminator_get_registered_addons_grouped_by_connected(); Forminator_Integration_Admin_Ajax::get_instance()->generate_nonce(); $this->addon_nonce = Forminator_Integration_Admin_Ajax::get_instance()->get_nonce(); add_filter( 'forminator_data', array( $this, 'add_addons_js_data' ) ); $this->validate_addon_page(); } /** * Add js data * * @param mixed $data Addon data to add. * @return mixed */ public function add_addons_js_data( $data ) { if ( Forminator::is_addons_feature_enabled() ) { $data['addons'] = forminator_get_registered_addons_list(); $data['addon_nonce'] = $this->addon_nonce; } return $data; } /** * Render custom output of addon when validated * * @since 1.2 */ protected function render_page_content() { if ( ! empty( $this->addon_page ) ) { // html output here are expected. echo $this->addon_page['output'];// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } else { parent::render_page_content(); } } /** * Render Addon title as header on addon page * * @since 1.2 */ public function render_header() { $this->show_playground_notice(); if ( ! empty( $this->addon_page ) ) { ?>

addon_page['title'] ); ?>

get_integration_section_callback( $section );// returned callback must be an array. if ( ! is_array( $callback ) ) { return false; } if ( ! is_callable( $callback ) ) { return false; } forminator_maybe_attach_addon_hook( $addon ); $output = call_user_func( $callback, $query_args ); $this->addon_page = array( 'title' => $addon->get_title(), 'output' => $output, ); return true; } }