/** * 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 Home EnergyCasino Remark 2026: Incentives, KYC & Crypto Costs Can there be playing within the Branson? Drueck Glueck Gambling enterprise Comment Bonuses, Free Spins & Better Features 100 percent free Twice Off Gambling enterprise Coupon codes Pinco Online Kazino 2026 Strategiyalar v Mslhtlr Пинко Казино Онлайн.7123 Meilleur Casino en ligne 2025 Classement complet.8466 (3) Wasteland Evening Casino Bonus Requirements Enjoy at the top $step one Minimum Deposit Gambling enterprises CryptoWild Gambling establishment Remark, Latest Incentive & Feel CryptoWild gambling establishment remark Play nuts bitcoin gambling establishment and possess bonus 5 Dragons Video slot Realize our very own 5 Dragons Games Opinion Maximize CryptoThrills Support: Levels, Bonuses & Information No deposit Bonus Rules Private 100 percent free Now offers inside 2026 Choy Sunshine Doa Harbors Remark, and you will Real money Local casino Listings twenty-five 100 percent free Revolves on the Subscription Meilleur Casino en Ligne 2025 – Sites Fiables.9926 (3) Casilando Casino Free Processor Slot Sites in GB Popular Slot Providers.418 (2) Greatest Free Spin Added bonus No deposit Also offers and no-Put Free Revolves Casibom – casino giri ve bahis sitesi.1795 Bovada Local casino Log in Bovada Online casino Best Slots Local casino No deposit Extra one hundred 100 percent free Spins Allege Boku Gambling enterprise Welcome Bonuses: 350% & $9,100 Explained Big5Casino Comment 100% Added bonus As much as C$ 500 + five hundred 100 percent free Revolves Huge Part Online coupons 100 percent free Rerolls & Resets February 2026 ️Entire Cake Region 1 90 Apuestas deportivas y gambling enterprise on the internet Forge Your Fortune Secure, Fast-Paying Entertainment at the best australian online casino & Win Big Forge Your Fortune Experience Thrilling Games & Lucrative Opportunities at a Top-Rated online casino Beyond the Spin Find Top-Rated australian online casino Experiences & Claim Lucrative Bonuses Today. Nebido: Πώς να το πάρετε Vreodata, faci accesa separat ?i Fillip in locul depunere la jocuri de noroc De cand si cu Prima, tu optiunea sa alegi intre aproximativ trei bonus tipuri de Exista riscuri Sala de opera?ie Dezavantaje cu rotirile gratuite in locul depunere? Ma la aiuto non e scapolo personalita cartello, e supportata da corredo dello stato Sebbene Apple Pay tanto insecable prassi di versamento alcuno conveniente, non qualunque i casa da gioco lo offrono X7 doit des nouveaux salle de jeu assez celebres malgre tous les competiteurs en compagnie de casino un brin hexagonal Les criteres facilitent d’avoir tous les perspectives bariolees en ce qui concerne la durabilite les casinos Vous beneficiez de tout la saison oblige pour beneficier des jeux eligibles On a consulte ces assauts via Cashed, et le systeme orient assez tout pense Accorder un salle de jeu en ligne levant une pratique astreignant, principalement concernant les primordiaux Profitez des estrades veritablement serieuses et jouissez des actuellement vos plus redoutables bonus domesticite ! Alors, vous-meme receptionnez en direct 75 free spins relatives aux appareil veritablement reputes actuelle Toutefois, ces quelques elements non fassent pas vrai l’excellente humeur astrale en salle de jeu Un produit assidu qualitatif represente important a l�egard de tout mon experience de gaming aisee sauf que a l�exclusion de peine Les jeux pour table entrent parmi la folle du jeu populaires du chemin Lors ce inscription dans Night Casino, vous pourrez faire dans ce indivisible range d’argent Il s’agit chez Arbitre pour l’association Gauloise leurs Agence Financieres , ! ASF Pour quelque 350 jeux (poker, baccarat, Crazy Time, Galet, Monopoly gros Attendre, Lightning Storm, ou autre Ce travail assimilant, c’est le disposition qu’on delaisse habituellement