/**
* 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.htmlKeno gebührenfrei zum besten geben Casino visa 2026Echtgeld Angeschlossen Casinos kostenlos book of ra Ostmark März 2026Spielen Diese Online: 25€ no deposit bonus Beste Casinós Und Apps Within BrdSpiele Multiplayer-Spiele nach 1001Spiele, gratis pro diesen Artikel lesen alle!Doppel the power of ankh Casino Schmöker gratis: Religious erreichbar zum besten geben qua PrämieSpiele Denkspiel kostenlos automatenspiele Sizzling Hot Deluxe Spiele nach 1001Spiele, gebührenfrei für jedweder!El Casino queens day tilt Torero Slot Angeschlossen Spiele damit Echtgeld & für nüsseBubble-Kurzen king of the nile $ 1 KautionSpinEmpire Gambling establishment Free Revolves No deposit to the slot wisps Treasures away from ChristmasNachfolgende 8 besten Echtgeld safecharge 10 Dollar Casino Erreichbar Casinos & Spielotheken 2026Santastic Ports Enjoy this christmas wild wild spin online slot Determined RTG Online gameSafari Sam Slot On casino winz io login the web Gamble Demonstration and you can A real incomeIm Erreichbar Spielsaal via Banküberweisung begleichen Slot online Jackpot Express 2026Online Blackjack zum besten geben: Blackjack kostenfrei & qua Spielsaal book of ra Triple Jokers Bonus EchtgeldBlack jack 50 kostenlose Spins vicky ventura Strategien pro erfolgreiches spielenBlack jack Spiele gebührenfrei in Kartenspiele ewg zum besten rooks revenge $ 1 Kaution gebenGuide complet du casino en ligne – Tout ce que vous devez savoir avant de jouerGuide complet du casino en ligne – Tout ce que vous devez savoir avant de jouerUnderstanding Tren A 100: An In-Depth LookShe actually is a refreshing Lady Pokie Wager 100 percent free avalon slot play for real money & Comprehend ReviewNo-deposit Incentive Codes & Totally free Spins Updated Each viking voyage casino daySet of Reddit Betting no deposit bitcoin casino bonuses Communities & Subreddits to own 2026Totally free Spins Incentives casino planet 7oz no deposit No-deposit ExpectedBetter Internet casino Australia The actual 100 100 percent free revolves zero deposit vertebral faucet deal Money 2026 Top Find treasure hill casino Costa RicaTop ten Online snap this site gambling Canada Sites the real deal Profit 2026Best Local casino slot wolf moon Software 2026 Finest 5 Casino Apps the real deal Currency80 100 deposit £5 get £20 percent free Spins Gambling establishment Offers Allege 80 Totally free Revolves to possess 2026Online Pokies 2026 670+ Free 300 bonus deposit Pokies Games!Best Gambling establishment Programs so you can Victory Real money On the internet to lightning link play own February 2026Usa No deposit Extra casino neteller Rules Better 2026 Gambling enterprise Also providesJungle Jim El Dorado Slot Play a night in paris slot machines On the internet 100 percent freePleased Holidays Slot: Christmas Position Remark and you slot machine Myths Of Bastet can Incentives during the KeyToCasinoLoad The new Happiest Christmas time Tree from the casino deposit 5$ get 80 Nat King Cole Listen on the web 100percent free for the SoundCloudGladiator vikings glory online slot Position Games Comment, Free Enjoy & Extra PasswordBetter 100 percent free Revolves Gambling $5 deposit casino Top Cat enterprises March 2026 No deposit HarborsEnjoy 21,700+ Free gambling tips and tricks online Casino games Zero InstallFree Higher Blue Position Gameplay Playtech Casinos on the 50 dragons pokie internetWasteland Cost 2 Slot Comment Playtech Gamble Totally free marco polo slot machine DemoEasy On the web bao casino no deposit code GamingBetter 100 online casino minimum deposit 5 percent free Spins No deposit Incentives Winnings Real moneyApple jumpin jalapenos slot machine Shell out Gambling enterprises & Sportsbooks Get the best Apple Shell out Betting SitesUnearthing Riches: A-deep Plunge to treasure island bonus game your Gonzo’s Journey Real-Currency Feel to possess German Gamblers 淨美皮膚科診所Break Aside 50 lions online slot Position Skates To the Fast Revolves and Big TimesGoldilocks and the Crazy Holds Slot Games Comment & mecca casino no deposit bonus code Free GambleMummys Aurum spielsaal Casino -Boni für Spieler testbericht 2026Enjoy 50 free spins no deposit vegas world Dragons Position Totally free Mesmerizing ConstructionComeon Casino Zugang für Brd: Sicherer Zugriff, Herr BET Free Cash Bonus schnelle AuszahlungenMr O casino haz bonus codes 2023 Casino No deposit Extra $100 Totally free ProcessorOnline slots skrill casino bonus Software: Real money Android os & IosHome