/**
* 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.htmlHomeGamble 18,500+ Online Ports Zero Install No SubscriptionCasumo dabei der umwerfender Abgabe bis wichtiger Hyperlink zu 500 Bonusgeld, 120 FreispieleRamses Book Trial Enjoy Totally free Ports during the Great comAristocrat’s Lightning Connect poker machineErreichbar Blackjack Spielen unter einsatz von Spielgeld unter anderem echtem BaresPharaoh’s Chance Slot RemarkRaging Rhino Position Gamble 100 percent free Spins20 Euro Prämie exklusive Einzahlung Kasino » 20 No Frankierung BoniPlay 32,178+ Free Slot Demos Zero ObtainDie gängigsten Casino-ZahlungsmethodenKingbit Casino View 2026Live Casino Canada Up to $1,one hundred thousand ExtraBest Bitcoin Casinos to Play Verbunden in March 20267 Jurassic Park & World Videos Ranked Jurassic Community Rebirth Rotten TomatoesBetter On-line casino Position Game 2026 Gamble Preferred PortsBlackjack Masterplan: Die besten Tipps & Systeme je weitere TriumphFree Cent Slots No Download, Gamble Online Slot machines and you may Game inside 2026Cricket Betting Info Totally free Cricket ForecastsCurso de Theatre elizabeth Audiovisual UESBThe brand new Jurassic Playground Remastered Position Spin the new Reels Today! Welcome to Pratek Automotive Pty Ltd1977 Argentine Huge PrixDunder Spielsaal Nachprüfung Free Spins Maklercourtage Codes GamesFree Thunderstruck 2 Slot Gameplay Microgaming Web based casinosPlay 19,300+ 100 percent free Position Game Zero ObtainGuide complet du casino en ligne : tout ce que vous devez savoir en 2026Cashapillar Slots Remark Enjoyable 100-Payline Slot BookGuide complet du casino en ligne : tout ce que vous devez savoir en 2026Mayan Princess queen of your nile slot payout Slots Opinion 2026 Play at best Web based casinos!ExpertenbewertungenMeet Franco Colapinto, F1’s first Argentine rider inside 23 decadesSpinions On the internet real money slot video game out of QuickspinGrand Federal Live: Nick Rockett Gains dramatic battle, Broadway Man statusTop 10 Casinos on the internet For real Currency Play in the All of us Feb 2026Finest Pokies Programs the real deal Gamblers PleyWelches mobile Spielsaal deutsche sprache Beste Mobilfunktelefon Casinos Probe 2026Matchbook Promotion codeDiscuss On the internet Pokies around australia: An entire PublicationLeoVegas Uk: Online casino Apps on the internet GambleFinest A real income Cent Slots in the Canada 202610 Euro Spielsaal Maklercourtage ohne Einzahlung: No Vorleistung Boni 2026The best Grand National per-means wagers, tips and you can and that completing towns sports books is actually paying out to yourFinest Cannabis Seed Financial in the usaAccumulator Calculator Rapidly Work-out Your Get backZimpler Opinion 2026, Gamble inside Gambling enterprises Taking Zimpler Deluxe 100 percent free revolves Commission ApproachAllgemeine Merkmale das Spielbank Boni100 percent free Gold coins In house Away from FunThunderstruck dos Slot Remark Better Web sites and Totally free Revolves 2026Grand Federal 2025 runners complete listing of finally declarations and affirmed horsesImmortal Love Slot Remark 2026 RTP and you will Demonstration