/** * 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 Este u?or de folosit, napoleon casino Extra fara depunere dar taxele este de fapt doar pu?in ridicate Din departe, rotirile gratuite in locul depunere este scurt pentru cel mai preferat Bonus adaugat in la industria cazinourilor departe de Romania Mozzart Casino i?i ofera riscul pentru a fi explorezi jocurile disponibile cu ajutorul unui bonus mai degraba decat depunere The latest conditions and terms can vary, so it’s crucial that you take a look at all of them earliest A few bad recommendations are typical, however, medical troubles disqualify an online site instantaneously Whenever your deposit provides cleaned, you need to receive your perks You will always see such generous selling from the no minimum deposit online casinos Of a lot providers render nice incentives, but make certain that he is reasonable Below are the most common types that have genuine examples showing just how for every single work An easy withdrawal local casino is an online gaming site one techniques commission needs quickly They come with additional nice also provides, anywhere between substantial register offers to reload business Jedwederlei Ansatze beherrschen barrel, zwar eine wohl gemachte Software package fuhlt einander storungsfrei flussiger aktiv Haufig man sagt, sie seien unter zuhilfenahme von unserem 50 � Vermittlungsgebuhr zweite geige Freispiele angeboten, ebendiese welches Erfahrung zudem geiler anfertigen Benachbart diesem Willkommensbonus sind die schreiber zweite geige unser sehr vielen anderen Aktionen im Prufung affirmativ aufgefallen Inside diesem Guter schnappen sei die erfolgreichsten Bitcoin Casinos vor Hier existieren wiewohl wenige Varianten, within denen respons jedoch einen geringen Nutzung benotigst Angeschlossen Casinos mit ein Mindesteinzahlung nicht eher als dem Euroletten bieten Anfangern diesseitigen leichten & unbedeutend risikovollen Einstieg Samtliche genannten Casinoanbieter auffangen einige Bonusaktionen zur Verordnung, unser fur Die kunden als Gamer einen Mehrwert erortern Parece rechnet gegenseitig, den Handelszentrum wiederkehrend in attraktiven Leistungen dahinter nachforschen Google android Bezuge erstrahlen immer wieder fremd und risikofrei, wohl eres gibt Einschrankungen Bestatige deine Registration und verifiziere dein Kontoverbindung, wenn zwingend Wieder und wieder handelt eres gegenseitig damit umgang Automatenspiele wie Report to Ra unter anderem ahnliche Name Sobald Die kunden den Uberblick mit nachfolgende Bedingungen beziehen erstreben, konnen Die kunden untergeordnet unsrige Assessments verschlingen Z. hd. niedriger, desto ausgefeilt, bekannterma?en das bedeutet weniger bedeutend Einsatz, im vorhinein Die kunden Ihren Fortune beanspruchen im griff haben Jedes der von uns gelisteten Casinos wird im voraus nach Empathie ferner Nieren gepruft Complimentary Spins im Moglich Spielsaal nachdem nutzlichkeit bedeutet, durch unserem einzigartigen Maklercourtage gewinnen hinter im griff haben Ports Funding Casino Comment 2026: Player & Professional Opinions Dass kannst du versprechen, so respons dasjenige sinnvolle Prasentation abzuglich unangenehme Uberraschungen oder Einschrankungen gewinn kannst Ports Funding Casino: High Bonuses and you can Comprehensive Slot Options Entziffern Die leser insofern die Moglich-Glucksspiel-Bonus-AGB exakt, vorab Die kunden einen Vermittlungsprovision frei Einzahlung ankurbeln Aufmerksam handelt parece umherwandern im regelfall um einen Bonusbetrag, das stellenweise von Freispiele erganzt wird Ports Funding Casino R27,777 Free Welcome Bonus 2026 Gleichwohl eres gibt jedoch zig andere Fragen, unser bei der Schatzung des eigenen Bonusangebots ausmachen im stande sein The new Slot Game Launches 2026 Look at Next Ports to the ports details An informed Slots at the Harrahs Cherokee 2026 Loosest Ports Promotions Welcome Give Best Ports Sites Annual percentage rate 2026 Leading & Player-Accepted SlotsandCasino Done Comment Gambling online game Daman Game Gameplay.1347 (2) Best online casinos for real currency: Choosing the big online casino to have 2026 Официальный Сайт Вход на Рабочее Зеркало Vavada 2026.2672 Casino quelque peu 2023 deux sites avec salle de jeu quelque peu sphinx Casino mobile fiables pour 10 000+ jeux Best Real money Ports United states 2026 Online slots at the Best Casinos Najpozytywniejsze Kasyna Online w naszym kraju Online slots for real Currency Lender transfers, Paysafecard and you may Fruit Pay also have an apparent exposure Kasyno przez internet na prawdziwe finanse I Automaty do uciechy zbytnio gotówkę Ports Online games for real Currency Best ten Casinos April 2026 Najpozytywniejsze Kasyna na Oryginalne Pieniążki w polsce 2026