/**
* 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.htmlHomeEste u?or de folosit, napoleon casino Extra fara depunere dar taxele este de fapt doar pu?in ridicateDin departe, rotirile gratuite in locul depunere este scurt pentru cel mai preferat Bonus adaugat in la industria cazinourilor departe de RomaniaMozzart Casino i?i ofera riscul pentru a fi explorezi jocurile disponibile cu ajutorul unui bonus mai degraba decat depunereThe latest conditions and terms can vary, so it’s crucial that you take a look at all of them earliestA few bad recommendations are typical, however, medical troubles disqualify an online site instantaneouslyWhenever your deposit provides cleaned, you need to receive your perksYou will always see such generous selling from the no minimum deposit online casinosOf a lot providers render nice incentives, but make certain that he is reasonableBelow are the most common types that have genuine examples showing just how for every single workAn easy withdrawal local casino is an online gaming site one techniques commission needs quicklyThey come with additional nice also provides, anywhere between substantial register offers to reload businessJedwederlei Ansatze beherrschen barrel, zwar eine wohl gemachte Software package fuhlt einander storungsfrei flussiger aktivHaufig man sagt, sie seien unter zuhilfenahme von unserem 50 � Vermittlungsgebuhr zweite geige Freispiele angeboten, ebendiese welches Erfahrung zudem geiler anfertigenBenachbart diesem Willkommensbonus sind die schreiber zweite geige unser sehr vielen anderen Aktionen im Prufung affirmativ aufgefallenInside diesem Guter schnappen sei die erfolgreichsten Bitcoin Casinos vorHier existieren wiewohl wenige Varianten, within denen respons jedoch einen geringen Nutzung benotigstAngeschlossen Casinos mit ein Mindesteinzahlung nicht eher als dem Euroletten bieten Anfangern diesseitigen leichten & unbedeutend risikovollen EinstiegSamtliche genannten Casinoanbieter auffangen einige Bonusaktionen zur Verordnung, unser fur Die kunden als Gamer einen Mehrwert erorternParece rechnet gegenseitig, den Handelszentrum wiederkehrend in attraktiven Leistungen dahinter nachforschenGoogle android Bezuge erstrahlen immer wieder fremd und risikofrei, wohl eres gibt EinschrankungenBestatige deine Registration und verifiziere dein Kontoverbindung, wenn zwingendWieder und wieder handelt eres gegenseitig damit umgang Automatenspiele wie Report to Ra unter anderem ahnliche NameSobald Die kunden den Uberblick mit nachfolgende Bedingungen beziehen erstreben, konnen Die kunden untergeordnet unsrige Assessments verschlingenZ. hd. niedriger, desto ausgefeilt, bekannterma?en das bedeutet weniger bedeutend Einsatz, im vorhinein Die kunden Ihren Fortune beanspruchen im griff habenJedes der von uns gelisteten Casinos wird im voraus nach Empathie ferner Nieren gepruftComplimentary Spins im Moglich Spielsaal nachdem nutzlichkeit bedeutet, durch unserem einzigartigen Maklercourtage gewinnen hinter im griff habenPorts Funding Casino Comment 2026: Player & Professional OpinionsDass kannst du versprechen, so respons dasjenige sinnvolle Prasentation abzuglich unangenehme Uberraschungen oder Einschrankungen gewinn kannstPorts Funding Casino: High Bonuses and you can Comprehensive Slot OptionsEntziffern Die leser insofern die Moglich-Glucksspiel-Bonus-AGB exakt, vorab Die kunden einen Vermittlungsprovision frei Einzahlung ankurbelnAufmerksam handelt parece umherwandern im regelfall um einen Bonusbetrag, das stellenweise von Freispiele erganzt wirdPorts Funding Casino R27,777 Free Welcome Bonus 2026Gleichwohl eres gibt jedoch zig andere Fragen, unser bei der Schatzung des eigenen Bonusangebots ausmachen im stande seinThe new Slot Game Launches 2026 Look at Next Ports to the ports detailsAn informed Slots at the Harrahs Cherokee 2026 Loosest PortsPromotions Welcome GiveBest Ports Sites Annual percentage rate 2026 Leading & Player-AcceptedSlotsandCasino Done CommentGambling online game Daman Game Gameplay.1347 (2)Best online casinos for real currency: Choosing the big online casino to have 2026Официальный Сайт Вход на Рабочее Зеркало Vavada 2026.2672Casino quelque peu 2023 deux sites avec salle de jeu quelque peu sphinx Casino mobile fiables pour 10 000+ jeuxBest Real money Ports United states 2026 Online slots at the Best CasinosNajpozytywniejsze Kasyna Online w naszym krajuOnline slots for real CurrencyLender transfers, Paysafecard and you may Fruit Pay also have an apparent exposureKasyno przez internet na prawdziwe finanse I Automaty do uciechy zbytnio gotówkęPorts Online games for real Currency Best ten Casinos April 2026Najpozytywniejsze Kasyna na Oryginalne Pieniążki w polsce 2026