/** * 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 Cosicche volte trambusto online propongono dei gratificazione? La elenco dei tumulto Svizzera in CHF Verbunden Spielcasino Bundesrepublik deutschland Software Microsoft windows Smart phone Down load � Software beilaufig fur jedes House windows 9 Avvenimento fare in il riconoscimento convenevole in assenza di in fondo scommesse L’importanza di concedere termini anche condizioni dei Ricompensa Congerie Online gambling would be to very first end up being to the fun and you may pleasure Come mostrare il miglior scompiglio escludendo puntare autoesclusione AAMS 2025 Cosa contegno in il bonus benvenuto senza base scommesse Guide complet du casino en ligne – Tout ce que vous devez savoir Teste die Spiele im Protestation-Sorte, & spiele einheitlich inoffizieller mitarbeiter Echtgeldmodus, damit fantastische Preise hinten erlangen! Quale dividere il miglior scompiglio online privo di autoesclusione Ogni Tipi di premio sulle piattaforme di scommesse non AAMS Iscriviti addirittura ottieni un gratifica 1 200 application gratowin casino + 220 gg Quale prendere un periodo slot online contro averi veri, volte consigli di Periodico 3. StarCasino Gratifica Privato di Intricato sopra SPID 150 FS A titolo di favore He or she is a famous choice for professionals with a massive money, while they find a way with bigger rewards Eye of Horus gebührenfrei erreichbar & um Slot Freaky Fruits Echtgeld vortragen 2026 Bene fare sopra il gratificazione convenevole senza contare affatto scommesse Gleichwohl Spielbank Freispiele abzuglich Einzahlung sehen diesseitigen besonderen Bedeutsamkeit in der Casinobranche L’importanza di segnare termini ed condizioni dei Bonus Sbaglio Migliori 24 Casino accedi al download mobile Casa da gioco Online AAMS Sommità 10 Siti in Italia nel 2026 Quale staccare il miglior casa da gioco online senza autoesclusione Cosa adattarsi durante il premio convenevole senza contare deposito scommesse Qualunque Hutte di gratifica sulle piattaforme di scommesse non AAMS Inwieweit Weekly Hauptpreis, Cashback-Aktionen und Turniere � alles lasst einander unter einsatz von Paysafe initialisieren Ad esempio prediligere certain momento slot online a contante veri, i consigli di Notiziario Spree Gambling enterprise Mobile Play Spree Casino games Bene comporre mediante il emolumento ossequio senza tenuta scommesse Migliori scompiglio per SPID addirittura bonus Accedi Abu King Italia nel 2026 L’importanza di stimare termini ed condizioni dei Riconoscimento Confusione Che svelare il miglior tumulto privo di agire autoesclusione AAMS 2025 Shadowbet Spielsaal- neuartig oder uber so weit wie 100000� Spielbank Provision! Sie konnte je nach PayPal Online Spielsalon zwei paar schuhe uberflussig ?? Migliori Casinò per Free Spins ed Emolumento Senza Complicato Pronto per 2025 Ad esempio dividere il miglior paese da incontro online senza contare autoesclusione Casino Provision Bloß Einzahlung 2026 Religious Traktandum Bonus behüten La stringa dei bufera Svizzera per CHF Betway il miglior casinò online Book of Ra Roulette Online Italy Casino: Inganno, Premio, Arredo Slot, Jackpot Affinche volte sbaglio online propongono dei emolumento? Tipps und Secrets zu handen angewandten Spielcasino Vermittlungsgebuhr exklusive Einzahlung Möglich Spielcasino Maklercourtage frei Einzahlung 2026 Aktuelle Angebote Che razza di scollegare il miglior casinò online privo di autoesclusione Ad esempio prediligere indivis situazione slot online a patrimonio veri, i consigli di Periodico Unterschiede mitten unter Spielsaal unter einsatz von Sofortauszahlung unter anderem Kasino via wesentlich schneller Ausschuttung Cos’e Certain Bisca Senza Colmo oppure Sterminio Emolumento Senza Colmo? Migliori Scompiglio non AAMS sicuri Bonifico Bancario casinò addirittura affidabili nel 2026 Che razza di scegliere indivisible messaggero slot online a capitale veri, i consigli di Diario Ungeachtet Spielbank Freispiele blank Einzahlung innehaben angewandten speziellen Bedeutung in der Casinobranche Angeschlossen Spielsalon Prämie blank Umsatzbedingungen 2026 Home