event_merge_tag_groups = array( 'wc_customer', 'wlm_wishlist' ); $this->event_name = esc_html__( 'User Added to Membership Level', 'wp-marketing-automations-pro' ); $this->event_desc = esc_html__( 'This event runs after a user added to membership level.', 'wp-marketing-automations-pro' ); $this->event_rule_groups = array( 'wlm', 'wc_customer', 'bwf_contact_segments', 'bwf_contact', 'bwf_contact_fields', 'bwf_contact_user', 'bwf_contact_wc', 'bwf_contact_geo', 'bwf_engagement', 'bwf_broadcast', 'wp_user' ); $this->optgroup_label = esc_html__( 'WishList Member', 'wp-marketing-automations-pro' ); $this->support_lang = true; $this->priority = 25; $this->v2 = true; } public static function get_instance() { if ( null === self::$instance ) { self::$instance = new self(); } return self::$instance; } public function load_hooks() { add_action( 'wishlistmember_add_user_levels', [ $this, 'added_level_to_user' ], 20, 3 ); } public function added_level_to_user( $user_id, $new_levels, $removed_levels ) { $this->process( $user_id, $new_levels, $removed_levels ); } /** * Make the required data for the current event and send it asynchronously. * * @param $user_id * @param $new_levels * @param $removed_levels */ public function process( $user_id, $new_levels, $removed_levels ) { $data = $this->get_default_data(); $user_data = get_userdata( $user_id ); if ( ! $user_data instanceof WP_User ) { return; } $data['user_id'] = $user_id; $new_level = $new_levels; if ( is_array( $new_level ) ) { $new_level = array_values( $new_level ); } $data['level_id'] = $new_level[0]; $data['email'] = $user_data->user_email; $this->send_async_call( $data ); } /** localise wishlist members level options */ public function admin_enqueue_assets() { if ( BWFAN_Common::is_load_admin_assets( 'automation' ) ) { $membership_levels = $this->get_view_data(); BWFAN_Core()->admin->set_events_js_data( $this->get_slug(), 'membership_levels', $membership_levels ); } } /** get wishlist members levels * @return array */ public function get_view_data() { $levels = wlmapi_get_levels(); $options = array(); if ( ! empty( $levels['levels']['level'] ) ) { foreach ( $levels['levels']['level'] as $level ) { $options[ $level['id'] ] = $level['name']; } } return $options; } /** * Show the html fields for the current event. */ public function get_view( $db_eventmeta_saved_value ) { ?> rules->setRulesData( $this->user_id, 'user_id' ); BWFAN_Core()->rules->setRulesData( $this->level_id, 'level_id' ); BWFAN_Core()->rules->setRulesData( BWFAN_Common::get_bwf_customer( $this->get_email_event(), $this->get_user_id_event() ), 'bwf_customer' ); } public function get_email_event() { return is_email( $this->email ) ? $this->email : null; } public function get_user_id_event() { return $this->user_id; } /** * Registers the tasks for current event. * * @param $automation_id * @param $integration_data * @param $event_data */ public function register_tasks( $automation_id, $integration_data, $event_data ) { if ( ! is_array( $integration_data ) ) { return; } $data_to_send = $this->get_event_data(); $this->create_tasks( $automation_id, $integration_data, $event_data, $data_to_send ); } public function get_event_data() { $data_to_send = [ 'global' => [] ]; $data_to_send['global']['user_id'] = $this->user_id; $data_to_send['global']['level_id'] = $this->level_id; $data_to_send['global']['email'] = $this->get_email_event(); return $data_to_send; } /** * Make the view data for the current event which will be shown in task listing screen. * * @param $global_data * * @return false|string */ public function get_task_view( $global_data ) { ob_start(); $new_level_url = admin_url(); $new_level_url = add_query_arg( array( 'page' => 'WishListMember', 'wl' => 'setup/levels', 'level_id' => $global_data['level_id'] . '#levels_access-' . $global_data['level_id'], ), $new_level_url ); ?>