integrationSlug ) ) { return; } // Check if the plugin or theme to integrate with is active. if ( ! $this->isPluginActive() && ! $this->isThemeActive() ) { return; } // Check if we can proceed with the integration. if ( apply_filters( 'aioseo_page_builder_integration_disable', false, $this->integrationSlug ) ) { return; } $this->init(); } /** * The init function. * * @since 4.1.7 * * @return void */ public function init() {} /** * Check if the integration is active. * * @since 4.4.8 * * @return bool Whether or not the integration is active. */ public function isActive() { return $this->isPluginActive() || $this->isThemeActive(); } /** * Check whether or not the plugin is active. * * @since 4.1.7 * * @return bool Whether or not the plugin is active. */ public function isPluginActive() { include_once ABSPATH . 'wp-admin/includes/plugin.php'; $plugins = apply_filters( 'aioseo_page_builder_integration_plugins', $this->plugins, $this->integrationSlug ); foreach ( $plugins as $basename ) { if ( is_plugin_active( $basename ) ) { return true; } } return false; } /** * Check whether or not the theme is active. * * @since 4.1.7 * * @return bool Whether or not the theme is active. */ public function isThemeActive() { $themes = apply_filters( 'aioseo_page_builder_integration_themes', $this->themes, $this->integrationSlug ); $theme = wp_get_theme(); foreach ( $themes as $name ) { if ( $name === $theme->stylesheet || $name === $theme->template ) { return true; } } return false; } /** * Enqueue the scripts and styles. * * @since 4.1.7 * * @return void */ public function enqueue() { $integrationSlug = $this->integrationSlug; aioseo()->core->assets->load( "src/vue/standalone/page-builders/$integrationSlug/main.js", [], aioseo()->helpers->getVueData( 'post', $this->getPostId(), $integrationSlug ) ); aioseo()->core->assets->enqueueCss( 'src/vue/assets/scss/integrations/main.scss' ); aioseo()->admin->addAioseoModalPortal(); aioseo()->main->enqueueTranslations(); } /** * Get the post ID. * * @since 4.1.7 * * @return int|null The post ID or null. */ public function getPostId() { // phpcs:disable HM.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Recommended foreach ( [ 'id', 'post', 'post_id' ] as $key ) { if ( ! empty( $_GET[ $key ] ) ) { return (int) sanitize_text_field( wp_unslash( $_GET[ $key ] ) ); } } // phpcs:enable if ( ! empty( $GLOBALS['post'] ) ) { return (int) $GLOBALS['post']->ID; } return null; } /** * Returns the page builder edit url for the given Post ID. * * @since 4.3.1 * * @param int $postId The Post ID. * @return string The Edit URL. */ public function getEditUrl( $postId ) { // phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable return ''; } /** * Returns whether or not the given Post ID was built with the Page Builder. * * @since 4.1.7 * * @param int $postId The Post ID. * @return boolean Whether or not the Post was built with the Page Builder. */ public function isBuiltWith( $postId ) { // phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable return false; } /** * Checks whether or not we should prevent the date from being modified. * * @since 4.5.2 * * @param int $postId The Post ID. * @return bool Whether or not we should prevent the date from being modified. */ public function limitModifiedDate( $postId ) { // phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable return false; } /** * Returns the processed page builder content. * * @since 4.5.2 * * @param int $postId The post id. * @param mixed $content The raw content. * @return string The processed content. */ public function processContent( $postId, $content = null ) { if ( empty( $content ) ) { $post = get_post( $postId ); if ( is_a( $post, 'WP_Post' ) ) { $content = $post->post_content; } } if ( aioseo()->helpers->isAjaxCronRestRequest() && ! doing_filter( 'the_content' ) ) { return apply_filters( 'the_content', $content ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound } return $content; } }