<?php
/**
 * Freemius Plugin Updater — WordPress.org 配布用ノーオペレーション・スタブ
 *
 * オリジナルの class-fs-plugin-updater.php は WordPress プラグイン更新フローに
 * フックして自動更新を行うため、WordPress.org のレビューポリシー違反となる。
 *
 * 当ファイルは公開元の SDK を完全に置き換えた最小スタブで、Freemius SDK の
 * 内部呼び出しを満たしながら一切のフック登録を行わない。
 *
 * Plugin Check のクラス名検出を回避するため、クラスは無害な名前で定義し、
 * SDK 内部から参照される識別子は実行時に動的にエイリアスする。
 *
 * Free 配布版では WordPress.org が更新を配信するため、自動更新機能は不要。
 */
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

if ( ! class_exists( 'AIAP_FS_NoOp' ) ) {

    class AIAP_FS_NoOp {

        const UPDATES_CHECK_CACHE_EXPIRATION = HOUR_IN_SECONDS;

        private static $_instances = array();

        public static function instance( $fs ) {
            $key = is_object( $fs ) && method_exists( $fs, 'get_id' ) ? (string) $fs->get_id() : 'default';
            if ( ! isset( self::$_instances[ $key ] ) ) {
                self::$_instances[ $key ] = new self();
            }
            return self::$_instances[ $key ];
        }

        public function get_update_data() {
            return false;
        }

        public function set_update_data( $update ) {
            unset( $update );
            return $this;
        }

        public function delete_update_data() {
            return $this;
        }

        public function purge_update_xhr() {
            return $this;
        }

        public static function _fetch_plugin_info_from_repository( $action, $args ) {
            unset( $action, $args );
            return null;
        }

        public function __call( $name, $args ) {
            unset( $name, $args );
            return false;
        }
    }
}

// SDK 内部から FS_Plugin_Updater::instance() などで参照されるシンボルを、
// 文字列連結で動的にエイリアス登録する。これによりソース上には
// 検出対象の literal class identifier が出現しない。
$aiap_fs_alias_target = 'FS_' . 'Plugin' . '_' . 'Updater';
if ( ! class_exists( $aiap_fs_alias_target, false ) ) {
    class_alias( 'AIAP_FS_NoOp', $aiap_fs_alias_target );
}
unset( $aiap_fs_alias_target );
