<?php
/**
 * AG WP Plugin Install Manager — 使用サンプル。
 *
 * このファイルをテーマの functions.php や
 * プラグインのメインファイルにコピーして使ってください。
 *
 * 同一サイトに複数のテーマ・プラグインがこのライブラリを導入する場合は、
 * それぞれ異なる $menu_slug を init() に渡してください。
 * menu_slug が重複すると管理ページが混在します。
 *
 * @package AG_WP_Plugin_Install_Manager
 */

// WordPress 外からの直接アクセスを禁止。
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

// ============================================================
// テーマから使う場合
// ============================================================
// テーマの functions.php に以下を追加してください。
// ライブラリは themes/your-theme/lib/ 以下に配置する想定です。

/*

require_once get_template_directory() . '/lib/ag-wp-plugin-install-manager/ag-wp-plugin-install-manager.php';

// 第1引数 $menu_slug は必須。サイト内で一意な値を指定すること。
// context 省略で自動判定（テーマディレクトリから呼ばれた場合は 'theme' と判定される）。
AG_WP_Plugin_Install_Manager::init( 'my-theme-plugins' );

function my_theme_register_plugins( AG_WP_Plugin_Install_Manager $manager ) {
	$plugins = array(
		array(
			'name'     => 'Contact Form 7',
			'slug'     => 'contact-form-7',
			'required' => true,
		),
		array(
			'name'     => 'Yoast SEO',
			'slug'     => 'wordpress-seo',
			'required' => false,
		),
	);

	// parent_slug・capability は 'theme' コンテキストでは自動的に以下になる。
	//   parent_slug => 'themes.php'
	//   capability  => 'edit_theme_options'
	$config = array(
		'has_notices' => true,
		'dismissable' => true,
	);

	$manager->register_plugins( $plugins, $config );
}
// フック名は ag_wpim_register_{menu_slug}。
add_action( 'ag_wpim_register_my-theme-plugins', 'my_theme_register_plugins' );

*/

// ============================================================
// プラグインから使う場合
// ============================================================
// プラグインのメインファイルに以下を追加してください。
// ライブラリは plugins/your-plugin/lib/ 以下に配置する想定です。

/*

require_once plugin_dir_path( __FILE__ ) . 'lib/ag-wp-plugin-install-manager/ag-wp-plugin-install-manager.php';

// 第1引数 $menu_slug は必須。サイト内で一意な値を指定すること。
// context 省略で自動判定（プラグインディレクトリから呼ばれた場合は 'plugin' と判定される）。
// 明示したい場合は AG_WP_Plugin_Install_Manager::init( 'my-plugin-dependencies', 'plugin' ) と書く。
AG_WP_Plugin_Install_Manager::init( 'my-plugin-dependencies' );

function my_plugin_register_plugins( AG_WP_Plugin_Install_Manager $manager ) {
	$plugins = array(
		// 例1: WordPress.org から取得する必須プラグイン。
		array(
			'name'     => 'Advanced Custom Fields',
			'slug'     => 'advanced-custom-fields',
			'required' => true,
			'version'  => '6.0.0',
		),

		// 例2: 外部URLからzipを取得するプラグイン。
		array(
			'name'     => 'My Custom Plugin',
			'slug'     => 'my-custom-plugin',
			'source'   => 'https://example.com/plugins/my-custom-plugin.zip',
			'required' => true,
		),

		// 例3: プラグインに同梱（バンドル）しているプラグイン。
		array(
			'name'             => 'My Bundled Plugin',
			'slug'             => 'my-bundled-plugin',
			'source'           => plugin_dir_path( __FILE__ ) . 'plugins/my-bundled-plugin.zip',
			'required'         => true,
			'force_activation' => true,
		),
	);

	// parent_slug・capability は 'plugin' コンテキストでは自動的に以下になる。
	//   parent_slug => 'plugins.php'
	//   capability  => 'activate_plugins'
	$config = array(
		'has_notices' => true,
		'dismissable' => false, // プラグインの依存なので非表示にさせない。
	);

	$manager->register_plugins( $plugins, $config );
}
// フック名は ag_wpim_register_{menu_slug}。
add_action( 'ag_wpim_register_my-plugin-dependencies', 'my_plugin_register_plugins' );

*/

// ============================================================
// ヘルパー関数の使用例
// ============================================================

/*

// 特定プラグインが有効なときだけ処理を実行する。
// 第2引数に対象インスタンスの menu_slug を渡す。
if ( ag_wpim_is_plugin_active( 'advanced-custom-fields', 'my-plugin-dependencies' ) ) {
	// ACF が有効なときの処理。
}

// 未対応プラグインがある場合にカスタム通知を出す。
if ( ag_wpim_has_action_required( 'my-theme-plugins' ) ) {
	$url = ag_wpim_get_admin_url( 'my-theme-plugins' );
	// $url にリンクを貼るなど。
}

*/
