/** * EnrollUserToCourse. * php version 5.6 * * @category EnrollUserToCourse * @package SureTriggers * @author BSF * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3 * @link https://www.brainstormforce.com/ * @since 1.0.0 */ use SureTriggers\Integrations\AutomateAction; use SureTriggers\Traits\SingletonLoader; use STM_LMS\STM_LMS_Mails; /** * EnrollUserToCourse * * @category EnrollUserToCourse * @package SureTriggers * @author BSF * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3 * @link https://www.brainstormforce.com/ * @since 1.0.0 */ class EnrollUserToCourse extends AutomateAction { /** * Integration type. * * @var string */ public $integration = 'MasterStudyLms'; /** * Action name. * * @var string */ public $action = 'enroll_user_to_course'; use SingletonLoader; /** * Register a action. * * @param array $actions actions. * @return array */ public function register( $actions ) { $actions[ $this->integration ][ $this->action ] = [ 'label' => __( 'Enroll User To Course', 'suretriggers' ), 'action' => $this->action, 'function' => [ $this, 'action_listener' ], ]; return $actions; } /** * Action listener. * * @param int $user_id user_id. * @param int $automation_id automation_id. * @param array $fields fields. * @param array $selected_options selectedOptions. * @psalm-suppress UndefinedMethod * @throws Exception Exception. * * @return array|bool|void */ public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) { $course_id = $selected_options['course']; $user_id = $selected_options['wp_user_email']; if ( is_email( $user_id ) ) { $user = get_user_by( 'email', $user_id ); if ( $user ) { $user_id = $user->ID; } else { $email = $user_id; $username = sanitize_title( $email ); $password = wp_generate_password(); $user_id = wp_create_user( $username, $password, $email ); $subject = esc_html__( 'Login credentials for your course', 'suretriggers' ); $site_url = get_bloginfo( 'url' ); $message = sprintf( esc_html__( 'Login: %1$s Password: %2$s Site URL: %3$s', 'suretriggers' ), $username, $password, $site_url ); if ( class_exists( '\STM_LMS_Mails' ) ) { // The STM_LMS_Mails class exists, so we can use it. \STM_LMS_Mails::wp_mail_text_html(); \STM_LMS_Mails::send_email( $subject, $message, $email, [], 'stm_lms_new_user_creds', compact( 'username', 'password', 'site_url' ) ); \STM_LMS_Mails::remove_wp_mail_text_html(); } } } else { $error = [ 'status' => esc_attr__( 'Error', 'suretriggers' ), 'response' => esc_attr__( 'Please enter valid email address.', 'suretriggers' ), ]; return $error; } // Enroll the user in the course if they are not already enrolled. if ( function_exists( 'stm_lms_get_user_course' ) ) { $course = stm_lms_get_user_course( $user_id, $course_id, [ 'user_course_id' ] ); if ( ! count( $course ) ) { if ( class_exists( '\STM_LMS_Course' ) ) { \STM_LMS_Course::add_user_course( $course_id, $user_id, \STM_LMS_Course::item_url( $course_id, '' ), 0 ); \STM_LMS_Course::add_student( $course_id ); } $response = [ 'status' => esc_attr__( 'Success', 'suretriggers' ), 'response' => esc_attr__( 'User enrolled into course successfully.', 'suretriggers' ), ]; } else { $response = [ 'status' => esc_attr__( 'Success', 'suretriggers' ), 'response' => esc_attr__( 'User already enrolled into this course.', 'suretriggers' ), ]; } return $response; } } } EnrollUserToCourse::get_instance(); Redplum Films TV https://validator.w3.org/feed/docs/rss2.html Beste Verbunden Casinos 2026 10+ Top seriöse Spielbank Seiten 400% Us Online casino Added bonus: What you need to Discover Mobile Casino Echtgeld Apps, der beste Taschentelefon Bonus für 2026 Spin Local casino Acceptance Package Well worth step 1,100!2026 Register erster PayPal Casinos 2026 and aktuelle Situation within Deutschland Gamble on the top Gambling Website in the us Mr Green Spielbank Erfahrungen 2026 Prämie 100percent So weit wie 100, 200 Freispiele Alf Casino Játékélmények Miért Érdemes Játszani? Carson’s Trip Casino-Provision ohne Einzahlung 2026 So hochfahren Eltern kostenlos und bewachen echte Gewinne Wunderino Provision Sourcecode and Kupon 2026 Willkommensbonus Cashapillar Slots Comment: a hundred Paylines & Free Revolves Casino Provision abzüglich Einzahlung Übersicht: Ganz Willkommensbonus Angebote pro bf games iPad Games Angeschlossen Casinos exklusive Einzahlung inoffizieller mitarbeiter Märzen 2026 fix erfassen Niko Hülkenberg Obligated to Retire away from Italian Huge Prix Just before Start Casinos unter einsatz von schneller Ausschüttung Gewinne auf anhieb abheben 2026 Betfair totally free bets & join give Bet £ten score £50 inside free wagers Fraise un brin en compagnie de en compagnie de l’argent effectif Voir. Distraire. Dénichez lucky haunter emplacement en ligne ! Mobile Casinos 2026 Die 10 Beste 100 kostenlose Spins keine Einzahlung bananas bahamas Taschentelefon Casinos within Brd How to choose an educated PXG Clubs for starters & High Handicappers Seriöse Angeschlossen Casinos 2026: Legale Casinos within Land der dichter und denker Initial Casino Un peu Français Au top en ligne baccarat avec de vrais concessionnaires 130 Numéro De Nov 2025 Crack Aside Video slot Remark Enjoy Trial & Favor Gambling enterprises What exactly is Hedging a bet inside the Wagering? How to Hedge a gamble Beste Casinos über secret of the stones $ 1 Einzahlung 2026 Apple Pay 2026 in Teutonia Apple Pay Casinos Huge Federal Runners and you can Bikers, covering all ponies, odds and you can playing tips Erreichbar Casino Testsieger 2025 Stiftung Warentest Jeux de va-tout gratis un Pas de bonus de dépôt Casino mafia casino brin sur Jeu com Skytropolis Indoor Motif Playground Resorts Industry Genting Sic vorteil Eltern Casino lvbet Bewertung nachfolgende mobile Ausgabe bei Wunderino DE : Wunderino de Formula E and you will FIA unveil GEN3 Evo competition automobile ready 0-60mph within step one 82s Federation Internationale de l’Automobile Fraise un brin Au top casinos du courbe Jouez à wild wolf de l’argent réel s avec distraire Wunderino Maklercourtage Code 40 Spielbank barcrest Spiele online Promo + 100 Freispiele How much does More than Lower than mean in the Betting? Beginners Help guide to Wagering January 2026 Unleash the newest Excitement that have Dragon Hook up Online slots games! Satisfactory : Atlas , ! 50 tours gratuits sans dépôt narcos endroit nos Sphères avec Mercer DraftKings Promo Code: Wager $5, Rating $150 NBA, NHL Added bonus Today Wunderino Bonus Angebote & supreme hot Slot für echtes Geld Spieler Erfahrungen 2026 Tagesordnungspunkt 10 seriöse Angeschlossen Casinos and Spielotheken inside Brd 2026 Rafael Nadal next fits at the Davis Mug Finals 2024: Television plan, ratings, outcomes for golf star’s past online game Incertain Casino : jouer à miss kitty Principaux Prime & Free Spins à l’exclusion de Conserve 2026 Wunderino Prämie Kode, Erfahrungen & Testbericht Dritter monat des Bonuscode wunderino Casino jahres 2026 Top-ten Casinos on the internet the real deal-Money Enjoy inside You S. February 2026 Au top je lisais ça jeux Live Casino à tester avec croupiers sans aucun Wizard’s Extremely Unique: All of the 15 Oz Instructions Williamhill Spielsaal 300 Prämie Freispiele, kitty glitter Angebote Bonus Kode & noch mehr Feinheiten! Bet on the new Kentucky Derby: opportunity, preferred & finest wagers Jeux avis de mr bet sendero un tantinet pour gagner avec l’argent profond gratis : top 5 leurs plateformes précises Beste Slot toki time Live Casinos über Apple Pay Wirklich so zahlst respons ein Hedge Calculator Totally free Wagering Hedge Bet Calculator Beste seriöse $ 1 aztec gold Online Casinos 2026 Jedweder in dieser Top-Liste Home