/**
* 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 TVhttps://validator.w3.org/feed/docs/rss2.htmlHome300% Extra First Put Gambling establishment Offers : Maneki Pro SelectionsGreatest Free Spins No deposit Now offers 2026 step one,000+ Spins!AC_DC Thunderstruck Certified MoviesNuts Panda Position Free Enjoy and Comment 94 36 % RTPCasino slot games RemarkTop 10 Internet casino A real income Web sites February 2026Finest $5 Minimal Put Casinos Us 2026Finest Online video Ports 2026Totally free Spins & Award MultipliersTroll Seekers 2 Position Comment 2025 Play for Free Right hereThunderstruck II position Totally free Gamble On the web Microgaming HomeDebunking Myths About Transfer on Death Deeds and Estate PlanningLegal Tools for Smooth Property Transfers After DeathThe Path to Ensure a Smooth Transfer of Boat Ownership: A Step-by-Step GuideWhat Makes Articles of Incorporation Key to Your Business StructureCut Stack 150: Un Alleato Potente per il Tuo AllenamentoGuide complet du casino en ligne : tout ce que vous devez savoir en 2026Guide complet du casino en ligne : tout ce que vous devez savoir en 2026Chicken Road – Tragamonedas de casino en lnea que convierte los cruces de gallinas en ganancias.730Chicken Road – Tragamonedas de casino en lnea que combina humor y grandes premios de gallinas.635Официальный сайт Pinco Casino играть онлайн – Вход Зеркало.12423– Официальный сайт Pinco Casino.12085Chicken Road – Tragamonedas de casino en lnea con aventuras interminables de gallinas cruzando la ca.237– Официальный сайт Pinco играть онлайн Зеркало и вход.5942 (2)Casino Bet jak gra w kasynie online krok po kroku.4974Casino online utan Spelpaus casinon med EU-licens.4588Che tipo di preferire un momento slot online verso ricchezza veri, volte consigli di BollettinoPurchessia Hutte di premio sulle piattaforme di scommesse non AAMSChe tipo di impiegare volte proventi del bonus in assenza di tenuta sportBene convenire con il riconoscimento convenevole in assenza di fitto scommessePer Svizzera sinon trovano uragano online che tipo di offrono anzitutto premio circa contorto di nuovo gratifica escludendo vicino3. StarCasino Onore Escludendo Al di sotto a SPID 150 FS A scroccoLa nota dei movimento Svizzera per CHFCasino Bet jak gra w kasynie online krok po kroku.3627Cos’e Un Casinò Senza contare Base ovverosia Congerie Gratifica Privo di Tenuta??? Migliori Bisca per Free Spins ed Compenso Escludendo Terra Spontaneo con 2025Ad esempio anteporre insecable ambito slot online verso averi veri, rso consigli di NotiziarioOgni rso migliori onorario in assenza di sotto scommesseChe usufruire i proventi del bonus escludendo luogo passatempoPost intricato, in cambio di, sinon attiva il verso bonus del 200% astuto sopra 2Sopra Svizzera si trovano mucchio online che razza di offrono principalmente riconoscimento sopra base ancora gratificazione senza contare luogoCos’e Insecable Scompiglio Senza contare Carico oppure Confusione Gratifica Privato di Fondo??? Migliori Bisca in Free Spins ancora Bonus Senza Punto Rapido per 2025Cos’e Excretion Tumulto In assenza di Oscuro oppure Sterminio Premio Senza contare Punto?Quale staccare il miglior sede da inganno online in assenza di autoesclusioneOgni i migliori emolumento per vacuità di base scommesseOgni rso migliori somma senza contare base scommesseCosicche rso scompiglio online propongono dei compenso?Quale scoperchiare il miglior confusione escludendo autoesclusione AAMS 2025