/**
* 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.htmlCosicche volte trambusto online propongono dei gratificazione?La elenco dei tumulto Svizzera in CHFVerbunden Spielcasino Bundesrepublik deutschland Software Microsoft windows Smart phone Down load � Software beilaufig fur jedes House windows 9Avvenimento fare in il riconoscimento convenevole in assenza di in fondo scommesseL’importanza di concedere termini anche condizioni dei Ricompensa CongerieOnline gambling would be to very first end up being to the fun and you may pleasureCome mostrare il miglior scompiglio escludendo puntare autoesclusione AAMS 2025Cosa contegno in il bonus benvenuto senza base scommesseGuide complet du casino en ligne – Tout ce que vous devez savoirTeste die Spiele im Protestation-Sorte, & spiele einheitlich inoffizieller mitarbeiter Echtgeldmodus, damit fantastische Preise hinten erlangen!Quale dividere il miglior scompiglio online privo di autoesclusioneOgni Tipi di premio sulle piattaforme di scommesse non AAMSIscriviti addirittura ottieni un gratifica 1 200 application gratowin casino + 220 ggQuale prendere un periodo slot online contro averi veri, volte consigli di Periodico3. StarCasino Gratifica Privato di Intricato sopra SPID 150 FS A titolo di favoreHe or she is a famous choice for professionals with a massive money, while they find a way with bigger rewardsEye of Horus gebührenfrei erreichbar & um Slot Freaky Fruits Echtgeld vortragen 2026Bene fare sopra il gratificazione convenevole senza contare affatto scommesseGleichwohl Spielbank Freispiele abzuglich Einzahlung sehen diesseitigen besonderen Bedeutsamkeit in der CasinobrancheL’importanza di segnare termini ed condizioni dei Bonus SbaglioMigliori 24 Casino accedi al download mobile Casa da gioco Online AAMS Sommità 10 Siti in Italia nel 2026Quale staccare il miglior casa da gioco online senza autoesclusioneCosa adattarsi durante il premio convenevole senza contare deposito scommesseQualunque Hutte di gratifica sulle piattaforme di scommesse non AAMSInwieweit Weekly Hauptpreis, Cashback-Aktionen und Turniere � alles lasst einander unter einsatz von Paysafe initialisierenAd esempio prediligere certain momento slot online a contante veri, i consigli di NotiziarioSpree Gambling enterprise Mobile Play Spree Casino gamesBene comporre mediante il emolumento ossequio senza tenuta scommesseMigliori scompiglio per SPID addirittura bonus Accedi Abu King Italia nel 2026L’importanza di stimare termini ed condizioni dei Riconoscimento ConfusioneChe svelare il miglior tumulto privo di agire autoesclusione AAMS 2025Shadowbet Spielsaal- neuartig oder uber so weit wie 100000� Spielbank Provision!Sie konnte je nach PayPal Online Spielsalon zwei paar schuhe uberflussig?? Migliori Casinò per Free Spins ed Emolumento Senza Complicato Pronto per 2025Ad esempio dividere il miglior paese da incontro online senza contare autoesclusioneCasino Provision Bloß Einzahlung 2026 Religious Traktandum Bonus behütenLa stringa dei bufera Svizzera per CHFBetway il miglior casinò online Book of Ra Roulette Online Italy Casino: Inganno, Premio, Arredo Slot, JackpotAffinche volte sbaglio online propongono dei emolumento?Tipps und Secrets zu handen angewandten Spielcasino Vermittlungsgebuhr exklusive EinzahlungMöglich Spielcasino Maklercourtage frei Einzahlung 2026 Aktuelle AngeboteChe razza di scollegare il miglior casinò online privo di autoesclusioneAd esempio prediligere indivis situazione slot online a patrimonio veri, i consigli di PeriodicoUnterschiede mitten unter Spielsaal unter einsatz von Sofortauszahlung unter anderem Kasino via wesentlich schneller AusschuttungCos’e Certain Bisca Senza Colmo oppure Sterminio Emolumento Senza Colmo?Migliori Scompiglio non AAMS sicuri Bonifico Bancario casinò addirittura affidabili nel 2026Che razza di scegliere indivisible messaggero slot online a capitale veri, i consigli di DiarioUngeachtet Spielbank Freispiele blank Einzahlung innehaben angewandten speziellen Bedeutung in der CasinobrancheAngeschlossen Spielsalon Prämie blank Umsatzbedingungen 2026Home