/** * 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 TV https://validator.w3.org/feed/docs/rss2.html Home Try QuinnBet Legitimate: See Our Decision For the QuinnBet Sporting events and you will Gambling establishment New iphone 4 & iPad: Establishing And ultizing The latest ios Type Donde Puedo Comprar Esteroides en España: Una Guía Completa How exactly to Register and you may Sign on in order to Queenwin Gambling enterprise Puntit recreations remark � Sports betting markets & enjoys Every time we get in touch with the customer provider continue on providing answer in the a contact getting ver Users normally contact support via email at the [current email address safe] There are also cashbacks offers so you’re able to ?50 that come with a 1x betting requirements The alive betting (In-Play) program enables you to place wagers into the situations because they unfold Promotion codes discover personal added bonus offers and you will enhanced bonuses from the gaming calendar They offer 100% added bonus up to �100 getting sign-up provide Accessing Your bank account via King Victory Casino Mobile Software Perché è Importante Monitorare i Livelli di Estrogeni Dopo un Ciclo Stávkujte 100 goldbet bez vkladu promo kód percent zadarmo Labākie 3 500% kazino stimuli  2026 Xslot Casino – Xslot Giri – Xslot Trkiye Giri Adresi.3367 XSlot – Spor Bahisleri Canl Bahisler Online Casino.9138 XSlot – Spor Bahisleri Canl Bahisler Online Casino.7113 I was eager to find the information and discover if the the latest campaigns illustrated value They’ve been details about the main benefit expiration go out, maximum payouts, and you may betting criteria Xslot Giri Casino – Xslot Trkiye Gncel Giri Adresi.6703 The way you use and you will Setup on the Android and ios Our very own taste, always, is to use a driving license as this confirms each other To try out From the Top Internet casino MALAYSIA 2025 � As to why Prefer ROYALEWIN? Wisdom such terms is essential, because they are very different ranging from casinos and advertisements Which is a tall order while you are using smaller bankrolls or chasing light bonuses Check the fresh qualified video game number before playing so that the give suits a favourite headings As a result the latest distributions and you may dumps that you generate to help you your account are covered When looking for for example a promotion, it is very important thought what your location is saying it Professionals declaration mixed experience-some appreciate victories to the demonstrations, others claim rigging in the real money play IAfter your go into a casino bonus password, make certain that you will be to play just the right game No guesswork, no reddit posts, no dry backlinks, only obvious value out of licensed Uk casinos Reload incentives are put incentives offered to existing players, delivering additional money otherwise revolves into the next British gambling enterprises frequently provide the newest no-deposit incentives to draw the fresh new players Not at all times – if you are no deposit bonuses need no initial money, they often have more strict terminology Discover Readily available Incentives while making your way through the terms and conditions and you may requirements Comprehend the Bally Casino promotion code webpage getting current information about the newest gambling enterprise vouchers The best kind of no deposit incentives comes in the brand new style of Totally free Revolves In advance of cashing aside, the bonus contribution as well as winnings should be gambled 35 times Unbedingt sie sind daneben Echtgeld Spiele, in folgenden untergeordnet Spielautomaten qua Spielgeld Cuori d’oro e promozioni scintillanti: le storie di successo dei service‑hero dei casinò online L’impatto economico del cloud gaming sulle infrastrutture dei casinò moderni Detrás de cada giro, una fortuna potencial Explora el universo de apuestas y diversión sin límites e ¿Será plinko el juego de azar más emocionante donde cada caída desafía tu suerte y podría multiplica ¡Prepárate para la Caída Controlada! ¿Plinko es realmente un juego de suerte o existe una estrategia ¡Aumenta tus ganancias potenciales con plinko dinero real y conoce las estrategias para maximizar ca Scommetti, vinci, emozionati la guida completa al funzionamento e alle strategie di Plinko demo per Scommetti, Vinci & Divertiti Guida Completa al plinko app e alle Possibilità di Guadagno con un Solo Gravity’s Gamble Maximize Your Potential Payouts with Plinko Free and Smart Angle Prediction.