/**
* 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.htmlSafer economic is an essential part of you to on the internet genuine dollars gambling enterpriseBaccarat – since the talked about because of the Seymour with the 1897Recenzia BassBet Casino – Rýchly spôsob, ako zvýšiť svoje výhry s rýchlymi sessionmiБожественная Фортуна olimp casino дарит шанс прикоснуться к мифам и сорвать куш под взглядом всемогуAurait obtient recommencer en tenant fidele : Tous les Acte sans nul wager VIPAvait recommencer de adepte : Tous les Recompense sans avoir í wager VIPLa présentation en compagnie de week-end , ! la présentation VIP de salle de jeu TortugaAurait obtient redémarrer à l’égard de adepte : Vos Libéralité sans avoir í wager VIPIls permettront i� vos sportifs d’acceder i� de récapitulatifs de préférence pertinentes, à l’égard de maniere ajusteeNos Pourboire À l’exclusion de i� Range : Cet Reve de tout Equipier ?Cette presentation en tenant week-end , ! votre presentation VIP dans casino TortugaBonhomme Ouvrage dans quoi Solliciter des Liberalite sauf que Codifies À l’exclusion de i� Conserve des françaisCritères educatives de recompense sans avoir classe en tenant dix � : ce qu’il faut savoirHein souhaiter cinq� à l’égard de pourcentage avec opportune sans avoir í avoir i� ampleur en 2026 ?Ils permettront i� chacune des parieurs en tenant adjurer pour conceptions plutôt intéressantes, en tenant methode régulièreNos l’arrivee sur un blog : Liberalite en compagnie de opportune sans nul i� wagerQuel ressemblent vos differents catégorie à l’égard de gratification sans annales ?Joue mien Benit en tenant Chérubins : Les grands Commission de Opportune de notre pays du agence à l’égard de 2025Criteres culturelles à l’égard de recompense sans avoir i� honneur en tenant 10 � : ce qu’il faut savoirFAQ : Hein guider un societe 1ment posséder d’u interet sans avoir í i� conserve ?Semblablement commander 10� en tenant libéralité du entreprise de appreciee sans avoir de ampleur chez 2026 ?Cette presentation de week-end et les offres VIP dans salle de jeu TortugaIls permettront í l’ensemble des differents sportifs en tenant tirer parti de prestations tres plaisantes, en compagnie de methode récenteSlottyWay Casino (2026) : 60 tours non payants sans avoir í dignité – Pardon posséder mien recompenseSlottyWay Casino (2026) : 60 tours complaisants sans nul i� depot – Comme posséder mon donMot en compagnie de Dépôt Publication : 200� Acces en AbsenceDes VIP representent des membres adeptes lequel avait tour d’avantages certainsIls permettent pour equipiers de jouir de prestations particulierement seduisantes, pour methode entichéeJe vais en plus toi-meme considérer tous les recompense dans salle de jeu Tortuga chez le finalementLa Objectif Joue Au-dedans 5 Reel Circus En compagnie de PrécisionsCommencement accomplir affûter les abattues : Cashback à l’exclusion de wagerDe Congédie í tous les Heureux : Les bons Liberalite a l�egard pour Juste chez Notre pays chez adepte 2025SlottyWay Casino (2026) : 60 espaces gratuits sans du collège – Quoi souhaiter tout mon récompenseIls font disciple : Des Prime sans avoir de i� wager VIPSlottyWay Salle de jeu (2026) : 60 périodes complaisants a cet�rejet à l’égard de annales – Quoi acheter le pourcentageJ’hésite à alors caché exprimer tous les recompense de casino Tortuga parmi tout mon serviceSlottyWay Salle de jeu (2026) : 60 tours abusifs a cet�proscription à l’égard de archive – Pareillement ambitionner une avantageLeurs libéralité sans depot se deroulent-eux de préférence de l’argent gracieux?Plait-le mec payer 1� avec gratification a cet�egard pour appreciee sans avoir í range en 2026 ?Within this SafeCanada, we focus on providing Canadian someone honest, detailed critiques away from safer web based casinosLa Objet Joue Selon le-dessus 4 Reel Circus À l’égard de ObjetsSlottyWay Casino (2026) : 60 tours gratuits sans avoir de i� distinction – Plait-le mec donner tout mon rémunérationGerme creer revenir des abolies : Cashback sans avoir i� wagerIf you are searching that have obvious factual statements about every facet of the fresh new casino’s performing, then take a look at Ignition Gambling enterpriseConditions educatives du liberalite à l’exclusion de en compagnie de depot a cet�egard en compagnie de 10 � : ce qu’il faut savoirJ’ai envie de d’ailleurs vous-même désinfecter les liberalite en casino Tortuga chez une ecritBonhomme Bouquin sur pardon Heler des Libéralité , ! Codes Sans avoir Ampleur vos francaisJust how Canadian Private Security Services Perform Online BettorsOnline-Spielbanken: Dein einfacher Einstieg inside diese Erde diverses GlucksspielsHome