<?php
/**
 * Load module code that is needed even when a module isn't active.
 * For example, if a module shouldn't be activatable unless certain conditions are met,
 * the code belongs in this file.
 *
 * @package automattic/jetpack
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit( 0 );
}

/**
 * Features available all the time:
 *    - When in offline mode.
 *    - When connected to WordPress.com.
 */
$tools = array(
	// Those oEmbed providers are always available.
	'shortcodes/facebook.php',
	'shortcodes/others.php',
	// Theme Tools.
	'theme-tools.php',
	'theme-tools/social-links.php',
	'theme-tools/random-redirect.php',
	'theme-tools/featured-content.php',
	'theme-tools/responsive-videos.php',
	'theme-tools/site-logo.php',
	'theme-tools/site-breadcrumbs.php',
	'theme-tools/social-menu.php',
	'theme-tools/content-options.php',
	// Needed for VideoPress, so videos keep working in existing posts/pages when the module is deactivated.
	'videopress/class.videopress-gutenberg.php',
);

// Some features are only available when connected to WordPress.com.
$connected_tools = array(
	'external-media/external-media.php',
	'plugin-search.php',
	'scan/scan.php', // Shows Jetpack Scan alerts in the admin bar if threats found.
	'simple-payments.php',
	'wpcom-tos/wpcom-tos.php',
	// These oEmbed providers are available when connected to WordPress.com.
	// Starting from 2020-10-24, they need an authentication token, and that token is stored on WordPress.com.
	// More information: https://developers.facebook.com/docs/instagram/oembed/.
	'shortcodes/instagram.php',
	// This Twitter oEmbed provider relies on a connection to WordPress.com to proxy the request.
	'shortcodes/twitter.php',
);

// Add connected features to our existing list if the site is currently connected.
if ( Jetpack::is_connection_ready() ) {
	$tools = array_merge( $tools, $connected_tools );
}

/**
 * Filter extra tools (not modules) to include.
 *
 * @since 2.4.0
 * @since 5.4.0 can be used in multisite when Jetpack is not connected to WordPress.com and not in offline mode.
 *
 * @param array $tools Array of extra tools to include.
 */
$jetpack_tools_to_include = apply_filters( 'jetpack_tools_to_include', $tools );

if ( ! empty( $jetpack_tools_to_include ) ) {
	foreach ( $jetpack_tools_to_include as $tool ) {
		if ( file_exists( JETPACK__PLUGIN_DIR . '/modules/' . $tool ) ) {
			require_once JETPACK__PLUGIN_DIR . '/modules/' . $tool;
		}
	}
}

/**
 * Add the "(Jetpack)" suffix to the widget names
 *
 * @param string $widget_name Widget name.
 */
function jetpack_widgets_add_suffix( $widget_name ) {
	return sprintf(
		/* Translators: Placeholder is the name of a widget. */
		__( '%s (Jetpack)', 'jetpack' ),
		$widget_name
	);
}
add_filter( 'jetpack_widget_name', 'jetpack_widgets_add_suffix' );
