registered_events = array( 'viewed_category', 'viewed_product', 'added_to_cart', 'removed_from_cart', 'completed_order', 'identify_completed_order', ); return $this; } /** * Registers hooks for the Attribution Commerce system. * * Usable by plugins to register methods or functions to hook into different eCommerce events. * Someday, late static binding will be available to all WordPress users, which will make this a bit less hacky. * * @since 1.0.0 * @access public * * @param string $hook The WordPress action ( e.g. do_action( '' ) ) * @param string $event The name of the function or method that handles the tracking output. * @param object $class The class, if any, that contains the $event method. * * @return mixed $registered False if no event was registered, string if function was registered, array if method. */ public function register_hook( $hook, $event, $args = 1, $class = '' ) { $registered_events = $this->get_registered_hooks(); if ( ! in_array( $event, $registered_events ) ) { return false; } if ( ! empty( $class ) && is_callable( array( $class, $event ) ) ) { $this->registered_events[ $hook ] = array( $class, $event ); $registered = add_filter( $hook, array( $class, $event ), 10, $args ); } else if ( is_callable( $event ) ) { $this->registered_events[ $hook ] = $event; $registered = add_filter( $hook, $event, 10, $args ); } else { $registered = false; } return $registered; } /** * Returns the registered events. * * Sub-classes can filter this to add additional events to be triggered. * * @since 1.0.0 * @access public * * @return array Filtered events. */ public function get_registered_hooks() { return apply_filters( 'attribution_commerce_events', array_filter( $this->registered_events ), $this ); } /** * Basic bootstrap for core integrations. * * @since 1.0.0 * @access public */ public static function bootstrap() { if ( class_exists( 'WP_eCommerce' ) ) { include_once ATTR_FILE_PATH . '/integrations/ecommerce/wp-e-commerce.php'; } else if ( class_exists( 'WooCommerce' ) ) { include_once ATTR_FILE_PATH . '/integrations/ecommerce/woocommerce.php'; } } /** * Event to be fired when a product category is viewed. * Abstract method, must be overridden by sub-class. * * @since 1.0.0 */ abstract function viewed_category(); /** * Event to be fired when a product is viewed. * Abstract method, must be overridden by sub-class. * * @since 1.0.0 */ abstract function viewed_product(); /** * Event to be fired when a product is added to the cart. * Abstract method, must be overridden by sub-class. * * @since 1.0.0 */ abstract function added_to_cart(); /** * Event to be fired when a product removed from the cart. * Abstract method, must be overridden by sub-class. * * @since 1.0.0 */ abstract function removed_from_cart(); /** * Event to be fired when an order is successfully completed. * Abstract method, must be overridden by sub-class. * * @since 1.0.0 */ abstract function completed_order(); } Attribution_Commerce::bootstrap();