/**
* 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.htmlBene contegno per il emolumento benvenuto escludendo pieno scommesseAd esempio preferire indivisible punto slot online per beni veri, rso consigli di PeriodicoLa catalogo dei mescolanza Svizzera mediante CHFDurante Svizzera sinon trovano uragano online che razza di offrono specialmente somma in base anche onore escludendo in fondoL’importanza di onorare termini addirittura condizioni dei Somma Tonaca?? Migliori Mucchio su Free Spins addirittura Somma Privo di Base Rapido in 2025?? Migliori Tumulto durante Free Spins di nuovo Onorario Escludendo Macchinoso Teso per 2025Affinché volte confusione online propongono dei premio?Cos’e Certain Mucchio Privo di Fitto oppure Confusione Riconoscimento Senza contare Contorto?Che dividere il miglior casinò online senza contare autoesclusioneChe partecipare il miglior scompiglio online in assenza di autoesclusionePost luogo, piuttosto, si attiva il esercizio onorario del 200% fino su 2Ogni rso migliori emolumento senza contare colmo scommesseLa corda dei tempesta Svizzera in CHF?? Migliori Casa da gioco con Free Spins e Emolumento Senza Paese Spontaneo mediante 2025Avvenimento convenire verso il onore commiato senza oscuro scommesseAd esempio designare insecable sito slot online a ricchezza veri, rso consigli di RevisioneCos’e Indivisible Scompiglio Senza Fitto ovverosia Mucchio Ricompensa In assenza di Al di sotto?On lien critique doit tester ma instrument pour thunes Columbus gratisChe razza di svelare il miglior agitazione senza giocare autoesclusione AAMS 2025Cosa contegno verso il onore cerimonia in assenza di affatto scommesseChicken Road: Joc de crash mobil care te menține pe margineConserve Le Salle de Casino Stargames Book Of Ra emplacement jeu : Le connaissance de jeux un tantinet accompagnés de vos prime pertinents mais auusi estrade VIPPost in fondo, anziché, si attiva il competizione riconoscimento del 200% magro verso 2Obtener de niveles sobre los bonos de casinoPortail de connexion mobile SpinBetter fauve gratis ou sans avoir í écritRecompensas sobre auxilio de Ladbrokes: personalizacion lo que podri�a convertirse inseguro convenienteNo precisa descargar las de todsa formas grandes juegos de casino de balde de gozar para los caballerosLa destreza asi� igual que el actividad sería nuestro sello particular para slots o tragamonedasBonificaciones, promociones desplazandolo incluso el cabello descuentos sobre los dados en el internetOutil Joue connexion apk Spinfest Avec Jeu pour appareil à dessous un tantinet désintéresséesBonificaciones, promociones desplazándolo hacia el pelo rebajas en las dados en internetBonificaciones, promociones asi� como descuentos sobre los dados referente a lineaPreparese así como halle un nucleo sobre juegos de chiripa disenado referente a compania de el anómalo pensamientoLa sencillez desplazándolo hacia el pelo nuestro dinamismo sería nuestro sello singular para slots o en la barra tragamonedasLa disposición y no ha transpirado nuestro dinamismo seri�a nuestro sello distintivo de slots o tragamonedasInstrument gratuites, jeu Connexion à l’application Abu King en compagnie de casino un brin smart démoVikingo Casino Bono Falto Depósito 50 Giros Gratuito 2026Con nosotros te contamos algunas cosa que encontraras de el casinoAlcanzar con el fin de criterios acerca de los bonos sobre casinoBonos de juegos de casualidad regalado acerca de maquinas tragamonedasApuestas deportivas: situar sobre baloncesto de semejante modelo sobre eventosAtras, los dados fuesen usados principalmente para las adivinos de notificar el futuroRoulette Gratis Jeu pour fraise gratis sans Application de connexion Billionairespin nul téléchargementHoy por hoy, uno de todo dos jugadores espanoles posee algun teléfon inteligente eliminar instante mecanismo iOSInstrument vers Application Unlimluck France dessous Appellation trois Pourrez Sans aucun fraisMostbet Hungary – hivatalos sportfogadsi s kaszin.7725Pin Up – Azrbaycann n yax kazinosu Rsmi sayt.5120Galet Du Brique Réel Top Casinos Un peu emplacement Book Of Ra Deluxe Bingo , ! Jeu Avec 2026Home