/**
* 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.htmlHomeWisdom such terms is essential, because they are very different ranging from casinos and advertisementsWhich is a tall order while you are using smaller bankrolls or chasing light bonusesCheck the fresh qualified video game number before playing so that the give suits a favourite headingsAs a result the latest distributions and you may dumps that you generate to help you your account are coveredWhen looking for for example a promotion, it is very important thought what your location is saying itProfessionals declaration mixed experience-some appreciate victories to the demonstrations, others claim rigging in the real money playIAfter your go into a casino bonus password, make certain that you will be to play just the right gameNo guesswork, no reddit posts, no dry backlinks, only obvious value out of licensed Uk casinosReload incentives are put incentives offered to existing players, delivering additional money otherwise revolves into the nextBritish gambling enterprises frequently provide the newest no-deposit incentives to draw the fresh new playersNot at all times – if you are no deposit bonuses need no initial money, they often have more strict terminologyDiscover Readily available Incentives while making your way through the terms and conditions and you may requirementsComprehend the Bally Casino promotion code webpage getting current information about the newest gambling enterprise vouchersThe best kind of no deposit incentives comes in the brand new style of Totally free RevolvesIn advance of cashing aside, the bonus contribution as well as winnings should be gambled 35 timesUnbedingt sie sind daneben Echtgeld Spiele, in folgenden untergeordnet Spielautomaten qua SpielgeldCuori d’oro e promozioni scintillanti: le storie di successo dei service‑hero dei casinò onlineL’impatto economico del cloud gaming sulle infrastrutture dei casinò moderniDetrás de cada giro, una fortuna potencial Explora el universo de apuestas y diversión sin límites e¿Será plinko el juego de azar más emocionante donde cada caída desafía tu suerte y podría multiplica¡Prepárate para la Caída Controlada! ¿Plinko es realmente un juego de suerte o existe una estrategia¡Aumenta tus ganancias potenciales con plinko dinero real y conoce las estrategias para maximizar caScommetti, vinci, emozionati la guida completa al funzionamento e alle strategie di Plinko demo perScommetti, Vinci & Divertiti Guida Completa al plinko app e alle Possibilità di Guadagno con un SoloGravity’s Gamble Maximize Your Potential Payouts with Plinko Free and Smart Angle Prediction.Ausztrália #1 100%-ban ingyenes ice casino online promóciós kód nyerőgépeiHol lehet játszani legjobb befizetés nélküli ice casino 2026 és nyerni? Valódi jövedelem!Sensaciones Fuertes y Ganancias Épicas Tu Aventura Comienza en 1xslots CasinoEgy tájékozott, befizetés nélküli, teljesen ingyenes hitnspin Magyarország bejelentkezés nyereményjáték, amelyhez nem kell fogadni, és 2026-ban is nyerhet!A legjobb 5 fontos befizetési bónuszok egyéni listája 2026-ban Bachillerato hitnspin kaszinó Bi+Blackjack trikovi za vašu najbolju igru u 2026. godiniEpitalon Ciclo: Beneficios y ConsideracionesUso Ottimale degli Steroidi per Culturisti: Una Guida per un Uso Sicuro ed Efficacekümme meetodit veebipõhiste pokkerimängude tõhusaks mängimiseksThunderstruck dos arvustus – panustamisvaba ja eelis, goldbet kasiino boonuskood tasuta keerlevad mängud10 parimat analüüsitud Kas vulkan vegas on legitiimne online-kasiinot, uusimad kohalike kasiinode boonuskoodidThunderstruck II positsioonimärkus: paremad vulkan vegas sisselogimisrakenduse allalaadimine omadused ja mängujuhendBlackjacki meetodi online kasiino sissemakseta vulkan spiele petutükkThunderstruck Stormchaser Positsiooni Arvamus Mängi pärisraha online kasiino sissemakseta vulkan spiele Tasuta Veebis$step 1 minimaalse sissemaksega kasiinod verde kasiino promokood kinnitasid Uus-Meremaa madalaima sissemakse pakkumisiGladiaator verde kasiino promotsioonidGuide complet du casino en ligne – Tout ce que vous devez savoirAhne two o cash verde kasiino Eesti slotimäng 100% tasuta keerleb Wolf Pokie RTP 96 nelikümmend kaheksa% Standard GambleJõulujokkeri positsiooni prooviversioon jokker 8000 paypal ja vaata Playn Wade'i ice kasiino Eesti märkmete rakendustGuide complet du casino en ligne – Tout ce que vous devez savoirThunderstrucki seisukoht internetis Täielik ice casino jackpot kommentaarYahtzee Osale rakenduse panus goldbet selles internetisParemad 5 meile kõigile Visa hasartmänguettevõtted 2026. virtuaalne kasiino sissemakseta goldbet aastalΔωρεάν Harbors Online Απολαύστε 10000+ κουλοχέρηδες χωρίς κόστος