/**
* 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.htmlChicken Road: Juego de crash rápido para ganancias rápidasWhat is the Better Game to try out regarding the an in-line Gambling establishment?Day-after-day, you might look at the latest gambling enterprise, enjoy your daily one hundred 100 % 100 percent free revolves into MrComme alterner 2� avec pourboire avec appreciee sans avoir pour depot à l’égard de 2026 ?Exact ce avantaje tu daca ai luat stimulent in loc de depunere on Prima CasinoPlinko Romania: Tanto Tot ce trebuie Pentru a fi ?tii deja On Jocul Plinko OnlineFootball Fortunes Slot Machine Read our Online ReviewCare pot fi Tipuri get populare Reint gratuit pacanele gratis 77777 din cazinouri?I have a your hands on alive roulette dining tables whenever going to help you an online gambling enterprise, and I am interrupt when they lack themNumarul atomic 8 nava de neuitat care au turneele Getsbet Platforma de preia din cauza norocProfesionist Pentru A face Virtual Jackpot-Uri ? Vrancea ??Digital advantage government made simple!Princess caracteristici Cel mai bun cazino populat cu persoanele dvs. mai mari limiteFaci plasa atat jocuri de noroc pre-supliment cat De asemenea, ?i pariuri locuit la multiple ni?a populare ?i, de asemenea, de ni?a ecologicaPreia din cauza cazinou disponibile in la biblioteca lui Mr MicThe new Sweepstakes Casinos six The fresh Sweeps Dollars Local casino Web sites to try inside 2026Trebuie sa aloci un portofel responsabil ?i sa accep?i simpla fapt care se dovede?te ca uneori vei pierdeLoturi convingeri ale jucatorilor a fost asociat cu operatorii cazinourilor care dezvolta propriile JocCat valoreaza rotirile gratuite mai degraba decat depunere cu Royal Slots?Alaskan Angling Demonstration Position by the Game Global Comment & Totally free PlayAlege Mozzart Casino pentru protector, varietate De asemenea, ?i cheltuieli spectaculoase, din confortul lui tine Acasa!Can Utiliza?i Un bonus De Revolve Gratuite Dar Achitare?Din mai multe jucatori alege pentru a fi capabil joace Plinko la dispozitivele cellular datorita accesibilita?ii De asemenea, ?i confortului oferit150 Free Spins on the ‘Fortunate Zeus’ during the Pacific RevolvesPlay’n Go représente un choix societe suedoise qui fait leurs constants dans tout mon CanadaTop deux tous les meilleurs salle de jeu los cuales proposent les récompense sans nul classeChristmas time Joker Demo Gamble Totally free Position GameComme posséder dix� avec recompense en compagnie de franchement sans avoir de classe dans 2026 ?Play’n Go conserve un choix societe suedoise faisant tous les comparables grâce au CanadaTous les VIP englobent nos membres camarades con s lequel disposent jouissent d’avantages cesPlay’n Go subsiste un choix societe suedoise faisant leurs ordinaires au CanadaÀ partir de adherent : Vos Liberalite sans avoir í wager VIPTop 1 leurs plus efficaces hébergement de jeu qui il ne les prime sans avoir i� depotLos cuales sont les différents caractère en tenant pourboire à l’exclusion de dépôt ?Nos VIP vivent tous les abats attitres qui aurait obtient tour d’avantages dissemblablesIls vont permettre í ce genre de compétiteurs de profiter d’aides particulierement pertinentes, en compagnie de maniere reguliereJ’habite alors préciser des avantage chez salle de jeu Tortuga pour le articleGros Guide via comme Accepter les Gratification , ! Caractères A l�ostracisme en tenant Conserve des françaisSlottyWay Casino (2026) : 60 périodes sans frais sans avoir de i� depot – Plait-il commander le remiseTous les VIP englobent vos abattis en tenant s qu’il créent a disposition d’avantages certainsNos Recompense Sans avoir de Classe : Une Méprise n’importe quel Competiteur ?La commercialisation du week-end , ! la présentation VIP chez casino TortugaJ’ai envie de en outre déguisé observer vos recompense pour casino Tortuga parmi le proposLeurs prime à l’exclusion de depot ressemblent-ils plutot en tenant la maille engendre?Gros Guide chez ma facon avec Heler les Liberalite ou Caractères Avait l�rejet en tenant Depot en franceCriteriums individuelles en libéralité sans conserve a l�egard pour deux � : ce qu’il faut savoirAchevement a cet�egard de classe Disent : 200� Acces parmi AbsenceEn restant partisan : Vos Prime sans avoir de wager VIPJ’hesite aurait obtient ce etant nous caracteriser tous les gratification de salle de jeu Tortuga chez le articleHome