is_satisfied() ) { $requirements->register_notice(); return; } Migrator::maybe_upgrade(); $repository = new LedgerRepository(); $this->ledger = new LedgerService( $repository ); $rules = new RuleEngine(); Database\ProgramStore::maybe_upgrade(); $backfill = new Programs\Backfill( $this->ledger ); $backfill->register(); ( new Programs\Recognition() )->register(); ( new Programs\BasicEmails() )->register(); ( new Programs\Referrals( $this->ledger ) )->register(); ( new Programs\ReferralsUI( new Programs\Referrals( $this->ledger ) ) )->register(); ( new Programs\GuestClaims( $this->ledger ) )->register(); ( new Programs\GuestClaimsUI( new Programs\GuestClaims( $this->ledger ) ) )->register(); ( new Programs\SpinUI( new Programs\Spin( $this->ledger ) ) )->register(); ( new \Devoynx\Rewards\Admin\ProgramTools( $backfill ) )->register(); ( new ExpiryProcessor( $this->ledger, $repository ) )->register(); ( new WooCommerce( $this->ledger, $rules ) )->register(); ( new EarningPreview( $rules, $this->ledger ) )->register(); ( new Wallet( $this->ledger ) )->register(); ( new Admin( $this->ledger, $repository ) )->register(); ( new WalletController( $this->ledger, $repository ) )->register(); ( new Privacy( $repository ) )->register(); ( new \Devoynx\Rewards\Privacy\ProgramPrivacy() )->register(); ( new \Devoynx\Rewards\Privacy\GuestPrivacy() )->register(); ( new \Devoynx\Rewards\Privacy\ReferralPrivacy() )->register(); /** * Fires after the Free plugin has registered its stable extension points. * * @param Plugin $plugin Plugin instance. * @param LedgerService $ledger Ledger service. */ do_action( 'devoynx_rewards_loaded', $this, $this->ledger ); } /** * Access the shared ledger service for documented integrations. * * @return LedgerService|null */ public function ledger() { return $this->ledger; } }