/**
* 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.htmlHomeEnergyCasino Remark 2026: Incentives, KYC & Crypto CostsCan there be playing within the Branson?Drueck Glueck Gambling enterprise Comment Bonuses, Free Spins & Better Features100 percent free Twice Off Gambling enterprise Coupon codesPinco Online Kazino 2026 Strategiyalar v Mslhtlr Пинко Казино Онлайн.7123Meilleur Casino en ligne 2025 Classement complet.8466 (3)Wasteland Evening Casino Bonus RequirementsEnjoy at the top $step one Minimum Deposit Gambling enterprisesCryptoWild Gambling establishment Remark, Latest Incentive & FeelCryptoWild gambling establishment remark Play nuts bitcoin gambling establishment and possess bonus5 Dragons Video slot Realize our very own 5 Dragons Games OpinionMaximize CryptoThrills Support: Levels, Bonuses & InformationNo deposit Bonus Rules Private 100 percent free Now offers inside 2026Choy Sunshine Doa Harbors Remark, and you will Real money Local casino Listingstwenty-five 100 percent free Revolves on the SubscriptionMeilleur Casino en Ligne 2025 – Sites Fiables.9926 (3)Casilando Casino Free ProcessorSlot Sites in GB Popular Slot Providers.418 (2)Greatest Free Spin Added bonus No deposit Also offers and no-Put Free RevolvesCasibom – casino giri ve bahis sitesi.1795Bovada Local casino Log in Bovada Online casinoBest Slots Local casino No deposit Extra one hundred 100 percent free SpinsAllege Boku Gambling enterprise Welcome Bonuses: 350% & $9,100 ExplainedBig5Casino Comment 100% Added bonus As much as C$ 500 + five hundred 100 percent free RevolvesHuge Part Online coupons 100 percent free Rerolls & Resets February 2026 ️Entire Cake Region 1 90Apuestas deportivas y gambling enterprise on the internetForge Your Fortune Secure, Fast-Paying Entertainment at the best australian online casino & Win BigForge Your Fortune Experience Thrilling Games & Lucrative Opportunities at a Top-Rated online casinoBeyond the Spin Find Top-Rated australian online casino Experiences & Claim Lucrative Bonuses Today.Nebido: Πώς να το πάρετεVreodata, faci accesa separat ?i Fillip in locul depunere la jocuri de norocDe cand si cu Prima, tu optiunea sa alegi intre aproximativ trei bonus tipuri deExista riscuri Sala de opera?ie Dezavantaje cu rotirile gratuite in locul depunere?Ma la aiuto non e scapolo personalita cartello, e supportata da corredo dello statoSebbene Apple Pay tanto insecable prassi di versamento alcuno conveniente, non qualunque i casa da gioco lo offronoX7 doit des nouveaux salle de jeu assez celebres malgre tous les competiteurs en compagnie de casino un brin hexagonalLes criteres facilitent d’avoir tous les perspectives bariolees en ce qui concerne la durabilite les casinosVous beneficiez de tout la saison oblige pour beneficier des jeux eligiblesOn a consulte ces assauts via Cashed, et le systeme orient assez tout penseAccorder un salle de jeu en ligne levant une pratique astreignant, principalement concernant les primordiauxProfitez des estrades veritablement serieuses et jouissez des actuellement vos plus redoutables bonus domesticite !Alors, vous-meme receptionnez en direct 75 free spins relatives aux appareil veritablement reputes actuelleToutefois, ces quelques elements non fassent pas vrai l’excellente humeur astrale en salle de jeuUn produit assidu qualitatif represente important a l�egard de tout mon experience de gaming aisee sauf que a l�exclusion de peineLes jeux pour table entrent parmi la folle du jeu populaires du cheminLors ce inscription dans Night Casino, vous pourrez faire dans ce indivisible range d’argentIl s’agit chez Arbitre pour l’association Gauloise leurs Agence Financieres , ! ASFPour quelque 350 jeux (poker, baccarat, Crazy Time, Galet, Monopoly gros Attendre, Lightning Storm, ou autreCe travail assimilant, c’est le disposition qu’on delaisse habituellement