Skip to content
Snippets Groups Projects
Plugin.php 2.36 KiB
Newer Older
  • Learn to ignore specific revisions
  • <?php
    /**
     * Main plugin class.
     *
     * @since 0.1
     */
    
    namespace CiviCRM_WP_REST;
    
    use CiviCRM_WP_REST\Civi\Mailing_Hooks;
    
    class Plugin {
    
    	/**
    	 * Constructor.
    	 *
    	 * @since 0.1
    	 */
    	public function __construct() {
    
    		$this->register_hooks();
    
    		$this->setup_objects();
    
    	}
    
    	/**
    	 * Register hooks.
    	 *
    	 * @since 1.0
    	 */
    	protected function register_hooks() {
    
    		add_action( 'rest_api_init', [ $this, 'register_rest_routes' ] );
    
    		add_filter( 'rest_pre_dispatch', [ $this, 'bootstrap_civi' ], 10, 3 );
    
    	}
    
    	/**
    	 * Bootstrap CiviCRM when hitting a the 'civicrm' namespace.
    	 *
    	 * @since 0.1
    	 * @param mixed $result
    	 * @param WP_REST_Server $server REST server instance
    	 * @param WP_REST_Request $request The request
    	 * @return mixed $result
    	 */
    	public function bootstrap_civi( $result, $server, $request ) {
    
    		if ( false !== strpos( $request->get_route(), 'civicrm' ) ) civi_wp()->initialize();
    
    		return $result;
    
    	}
    
    	/**
    	 * Setup objects.
    	 *
    	 * @since 0.1
    	 */
    	private function setup_objects() {
    
    		if ( CIVICRM_WP_REST_REPLACE_MAILING_TRACKING ) {
    
    			// register mailing hooks
    			$mailing_hooks = ( new Mailing_Hooks )->register_hooks();
    
    		}
    
    	}
    
    	/**
    	 * Registers Rest API routes.
    	 *
    	 * @since 0.1
    	 */
    	public function register_rest_routes() {
    
    		// rest endpoint
    		$rest_controller = new Controller\Rest;
    		$rest_controller->register_routes();
    
    		// url controller
    		$url_controller = new Controller\Url;
    		$url_controller->register_routes();
    
    		// open controller
    		$open_controller = new Controller\Open;
    		$open_controller->register_routes();
    
    		// authorizenet controller
    		$authorizeIPN_controller = new Controller\AuthorizeIPN;
    		$authorizeIPN_controller->register_routes();
    
    		// paypal controller
    		$paypalIPN_controller = new Controller\PayPalIPN;
    		$paypalIPN_controller->register_routes();
    
    		// pxpay controller
    		$paypalIPN_controller = new Controller\PxIPN;
    		$paypalIPN_controller->register_routes();
    
    		// civiconnect controller
    		$cxn_controller = new Controller\Cxn;
    		$cxn_controller->register_routes();
    
    		// widget controller
    		$widget_controller = new Controller\Widget;
    		$widget_controller->register_routes();
    
    		// soap controller
    		$soap_controller = new Controller\Soap;
    		$soap_controller->register_routes();
    
    		/**
    		 * Opportunity to add more rest routes.
    		 *
    		 * @since 0.1
    		 */
    		do_action( 'civi_wp_rest/plugin/rest_routes_registered' );
    
    	}
    
    }