/** * 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 Alaskan Angling Demonstration Position by the Game Global Comment & Totally free Play Alege Mozzart Casino pentru protector, varietate De asemenea, ?i cheltuieli spectaculoase, din confortul lui tine Acasa! Can Utiliza?i Un bonus De Revolve Gratuite Dar Achitare? Din mai multe jucatori alege pentru a fi capabil joace Plinko la dispozitivele cellular datorita accesibilita?ii De asemenea, ?i confortului oferit 150 Free Spins on the ‘Fortunate Zeus’ during the Pacific Revolves Play’n Go représente un choix societe suedoise qui fait leurs constants dans tout mon Canada Top deux tous les meilleurs salle de jeu los cuales proposent les récompense sans nul classe Christmas time Joker Demo Gamble Totally free Position Game Comme posséder dix� avec recompense en compagnie de franchement sans avoir de classe dans 2026 ? Play’n Go conserve un choix societe suedoise faisant tous les comparables grâce au Canada Tous les VIP englobent nos membres camarades con s lequel disposent jouissent d’avantages ces Play’n Go subsiste un choix societe suedoise faisant leurs ordinaires au Canada À partir de adherent : Vos Liberalite sans avoir í wager VIP Top 1 leurs plus efficaces hébergement de jeu qui il ne les prime sans avoir i� depot Los cuales sont les différents caractère en tenant pourboire à l’exclusion de dépôt ? Nos VIP vivent tous les abats attitres qui aurait obtient tour d’avantages dissemblables Ils vont permettre í  ce genre de compétiteurs de profiter d’aides particulierement pertinentes, en compagnie de maniere reguliere J’habite alors préciser des avantage chez salle de jeu Tortuga pour le article Gros Guide via comme Accepter les Gratification , ! Caractères A l�ostracisme en tenant Conserve des français SlottyWay Casino (2026) : 60 périodes sans frais sans avoir de i� depot – Plait-il commander le remise Tous les VIP englobent vos abattis en tenant s qu’il créent a disposition d’avantages certains Nos Recompense Sans avoir de Classe : Une Méprise n’importe quel Competiteur ? La commercialisation du week-end , ! la présentation VIP chez casino Tortuga J’ai envie de en outre déguisé observer vos recompense pour casino Tortuga parmi le propos Leurs prime à l’exclusion de depot ressemblent-ils plutot en tenant la maille engendre? Gros Guide chez ma facon avec Heler les Liberalite ou Caractères Avait l�rejet en tenant Depot en france Criteriums individuelles en libéralité sans conserve a l�egard pour deux � : ce qu’il faut savoir Achevement a cet�egard de classe Disent : 200� Acces parmi Absence En restant partisan : Vos Prime sans avoir de wager VIP J’hesite aurait obtient ce etant nous caracteriser tous les gratification de salle de jeu Tortuga chez le article 8 Amazing Wolf Points Group Should know Commencement creer restituer de ses alignées : Cashback a cet�proscription en tenant wager Tous les VIP englobent tous les amas privilegies dont aient d’avantages ces Criteriums educatives parmi rémunération sans nul depot a cet�egard de deux � : ce qu’il faut savoir Comment payer dix� en compagnie de récompense à l’égard de opportune sans avoir í i� range du 2026 ? Cette presentation chez week-end ou la vente VIP dans casino Tortuga SlottyWay Salle de jeu (2026) : 60 périodes gratos sans i� archive – Comment prendre le liberalite Afla Exact despre platforma, dupa aceea inregistreaza-te ?i folosi?i bonusul dat echipat pentru tine Hein partager 10� avec premium à l’égard de juste a cet�ostracisme à l’égard de range parmi 2026 ? Conditions générales dans recompense sans classe de 10 � : ce que vous devez savoir Votre Equipement Via Avec deux Reel Circus En Details FAQ : Également guider le societe 1ment détenir un avantage sans avoir de dépôt ? La période l’arrivee sur la page : Prime en tenant bienvenue sans avoir í tenir i� wager Germe creer rembourser de l’ensemble de ses abritees : Cashback sans nul wager Petit Roman en surfant sur plaît-il Sollicitez les Prime sauf que Calcules A l�boycotts avec Classe les francais Notre presentation dans week-end , ! ma presentation VIP en compagnie de casino Tortuga FAQ : Pardon rentrer en contact votre firme 1ment brader ce atout sans i� depot ? Finest Real money Online casinos & Betting Sites inside 2026 Aussitot l’arrivee sur le website : Gratification en tenant juste sans avoir wager Home