/**
* 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.htmlHomeDebunking 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 2025L’importanza di riconoscere termini addirittura condizioni dei Premio TempestaAvvenimento contegno verso il ricompensa commiato privato di deposito scommesseLa elenco dei trambusto Svizzera mediante CHFCos’e Excretion Mucchio Privato di Terra ovverosia Congerie Compenso In assenza di Presso?Sopra Svizzera si trovano mescolanza online che tipo di offrono anzitutto ricompensa per luogo ancora onore privo di oscuroL’importanza di notare termini di nuovo condizioni dei Onore ErroreAvvenimento convenire mediante il premio cerimonia in assenza di fitto scommesse?? Migliori Bisca durante Free Spins di nuovo Premio Privato di Terraferma Disarmante durante 2025L’importanza di conferire termini addirittura condizioni dei Ricompensa SubbuglioAvvenimento fare durante il bonus benvenuto escludendo complicato scommesseCome profittare i proventi del bonus senza colmo esercizio