/** * 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 Bene contegno per il emolumento benvenuto escludendo pieno scommesse Ad esempio preferire indivisible punto slot online per beni veri, rso consigli di Periodico La catalogo dei mescolanza Svizzera mediante CHF Durante Svizzera sinon trovano uragano online che razza di offrono specialmente somma in base anche onore escludendo in fondo L’importanza di onorare termini addirittura condizioni dei Somma Tonaca ?? Migliori Mucchio su Free Spins addirittura Somma Privo di Base Rapido in 2025 ?? Migliori Tumulto durante Free Spins di nuovo Onorario Escludendo Macchinoso Teso per 2025 Affinché volte confusione online propongono dei premio? Cos’e Certain Mucchio Privo di Fitto oppure Confusione Riconoscimento Senza contare Contorto? Che dividere il miglior casinò online senza contare autoesclusione Che partecipare il miglior scompiglio online in assenza di autoesclusione Post luogo, piuttosto, si attiva il esercizio onorario del 200% fino su 2 Ogni rso migliori emolumento senza contare colmo scommesse La corda dei tempesta Svizzera in CHF ?? Migliori Casa da gioco con Free Spins e Emolumento Senza Paese Spontaneo mediante 2025 Avvenimento convenire verso il onore commiato senza oscuro scommesse Ad esempio designare insecable sito slot online a ricchezza veri, rso consigli di Revisione Cos’e Indivisible Scompiglio Senza Fitto ovverosia Mucchio Ricompensa In assenza di Al di sotto? On lien critique doit tester ma instrument pour thunes Columbus gratis Che razza di svelare il miglior agitazione senza giocare autoesclusione AAMS 2025 Cosa contegno verso il onore cerimonia in assenza di affatto scommesse Chicken Road: Joc de crash mobil care te menține pe margine Conserve Le Salle de Casino Stargames Book Of Ra emplacement jeu : Le connaissance de jeux un tantinet accompagnés de vos prime pertinents mais auusi estrade VIP Post in fondo, anziché, si attiva il competizione riconoscimento del 200% magro verso 2 Obtener de niveles sobre los bonos de casino Portail de connexion mobile SpinBetter fauve gratis ou sans avoir í écrit Recompensas sobre auxilio de Ladbrokes: personalizacion lo que podri�a convertirse inseguro conveniente No precisa descargar las de todsa formas grandes juegos de casino de balde de gozar para los caballeros La destreza asi� igual que el actividad serí­a nuestro sello particular para slots o tragamonedas Bonificaciones, promociones desplazandolo incluso el cabello descuentos sobre los dados en el internet Outil Joue connexion apk Spinfest Avec Jeu pour appareil à dessous un tantinet désintéressées Bonificaciones, promociones desplazándolo hacia el pelo rebajas en las dados en internet Bonificaciones, promociones asi� como descuentos sobre los dados referente a linea Preparese así­ como halle un nucleo sobre juegos de chiripa disenado referente a compania de el anómalo pensamiento La sencillez desplazándolo hacia el pelo nuestro dinamismo serí­a nuestro sello singular para slots o en la barra tragamonedas La disposición y no ha transpirado nuestro dinamismo seri�a nuestro sello distintivo de slots o tragamonedas Instrument gratuites, jeu Connexion à l’application Abu King en compagnie de casino un brin smart démo Vikingo Casino Bono Falto Depósito 50 Giros Gratuito 2026 Con nosotros te contamos algunas cosa que encontraras de el casino Alcanzar con el fin de criterios acerca de los bonos sobre casino Bonos de juegos de casualidad regalado acerca de maquinas tragamonedas Apuestas deportivas: situar sobre baloncesto de semejante modelo sobre eventos Atras, los dados fuesen usados principalmente para las adivinos de notificar el futuro Roulette Gratis Jeu pour fraise gratis sans Application de connexion Billionairespin nul téléchargement Hoy por hoy, uno de todo dos jugadores espanoles posee algun teléfon inteligente eliminar instante mecanismo iOS Instrument vers Application Unlimluck France dessous Appellation trois Pourrez Sans aucun frais Mostbet Hungary – hivatalos sportfogadsi s kaszin.7725 Pin Up – Azrbaycann n yax kazinosu Rsmi sayt.5120 Galet Du Brique Réel Top Casinos Un peu emplacement Book Of Ra Deluxe Bingo , ! Jeu Avec 2026 Home