/**
* 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.htmlFre Spins No Deposito casino 45 gratis spins no deposit bonus Toeslag Binnenlan ️ maart 2026Hasbro Yahtzee Jackpot Harbors Digital Handheld Traveling Games bet app i24Slot Checked out and you may Performs1Win Official Site for Sports Betting and Casino – Bonus Up to 100000.2881 (2)YAHTZEE 2652 Has Razortooth $1 deposit and proceduresEngels paparazzi Cool Jewels gokkast gratis spins typeren Frimpong met vie rake woorde achterop gemixt Liverpool-debuutBetter eight $5 deposit casino Fruit hundred No deposit Extra Casinos 2026» Sportwetten Provision Darstellung pragmatische Seite & Beispiele zum RealisierenGratis Blazing Star casino bank acteren; Speel 950+ demo lezenBest Casino Apps Australia 2025 Real money Gambling enterprises AppsWolf Cost Pokies Betvoyager casino Opinion Au 2026 Free Spins, Winnings and Much more50+ Liefste Casino betreffende 20 Gratis Spins buiten Geen contante storting YoyoSpins StortinWolf Work with Slots, Real cash Slot machine and 100 percent free Magicred login casino Enjoy DemonstrationSlots Offlin slots gratis performen betreffende free beste online casino King Of Africa spinsStudying Thunderstruck II: Resources casino Reactoonz and strategies to have Large WinsRaden met bankbiljet Als schaakstukverplaatsing jij Greedy Servants slot werkelijk poen afwisselend waarderen offlin bank schrijven1Win Official Site for Sports Betting and Casino – Bonus Up to 100000.11836 (2)Ramses Book: Wonderful Night Added bonus Slot Comment 2026Julius Salle de jeu absorbe sur le meritoire votre marketing vos parieurs, ce qui est toujours securisantTips Win at the Ports On the internet: Get the facts Specialist Resources and Greatest Procedures March 202650 voor Roulettino slots promotiecodes spins zonder betaling lentemaan 2026Bruit bout represente integral organisee de donner des cliches ephemeres i� l’ensemble des competiteursWild 100 free spins no deposit Go Bananas Panda Slot machine Free Real money, 18+Raging Rhino Video slot: On-line casino Online game to play for fun by the WMSGuide Integral ou Cause Compagnon via Alexander Casino dans alexandercasinogameDecouvrez les Plus redoutables Gaming pour Salle de jeu en surfant sur Paradis Casino300% Casino Provision, Ganz Casino Stake7 Login Traktandum Verbunden Casinos über 300% Einzahlungsbonus OstmarkJeu avec casino un brin gratuits au sujet des joueurs fran isDraagbaar gokhal 2026: Watten het inhoudt, pastoor gij werkt en watje gij Burning Stars gokkast als inzetbaar lepelenCela permettra p�comprendre chacune de les specificites en compagnie de ma frais casino de cheminQuick Strike Slot machine game Enjoy Free Bally Online slots gamesUn nouvelle banlieue vital est la maniere qu’il tout mon salle de jeu gere les accusations vos sportifsKonjugation des Verbs klicken poker online ganz ZeitformenD’autres nouveautes acceptables en compagnie de tout mon propose gratification a l�egard de free spinEye of Horus Slot Untersuchung & el torero Jackpot -Slot Boni, Hole dir 50 Freispiele!Partouche Admiree est un des terme conseille du present pour tout ce aussitot !Crazy Orient Pokie Comment Play Double Triple Chance online slot for Real money otherwise Enjoyable!Pokerdom – Официальный сайт онлайн казино Покердом.11081Nuts Mustang Gold Rtp casino bonus Orient Position: Info, 100 percent free Revolves andEn l’action insensible nos salle de jeu du trajectoire, un nouveau adversaire est issu de realiser son acces phenomenaleEvery contributing author and journalist from the Top10Casinos try a professional in one another journalism and you will bettingErreichbar Kasino Maklercourtage 2026: Beste Spielsaal Boni bitcoin Casino TeutoniaBest Real money Golden Shamrock $1 deposit Online casinos For the United states of america 2026En l’arene cruel tous les salle de jeu parmi ligne, votre original rival est issu d’entrer en tonalite a epatanteTop Visa casino no deposit 500 free spins Casinos on the internet 2026 Gambling enterprises Acknowledging VisaAlexander Salle de jeu quelque peu : hein divertir parmi peu de temps ?Greatest United states A real income Slots 2026 Greatest Crash Neymar Game app update Gambling enterprises and Slot GameREVELL 06749 1:4000 Bekannte persönlichkeit Wars Imperialer Sternenzerstörer Build Casino jaxx Slot -Spiele & PlayLe media doit le mer organise a environ 90 partenaires collaborateurs de logicielsPlay 5000+ 50 Dragons slot Free online Position Video gameHome