Warning: This class has been deprecated. Class LLMS_Certificate_User is deprecated with no direct replacement instead.
LLMS_Certificate_User
Certificate class
Description Description
Generates certificate post for user, triggered from engagement.
Source Source
File: includes/certificates/class.llms.certificate.user.php
class LLMS_Certificate_User extends LLMS_Certificate { /** * @var string|false * @since 1.0.0 */ public $account_link; /** * @var string * @since 1.0.0 */ public $email_content; /** * @var string * @since 1.0.0 */ public $recipient; /** * partial path and file name of HTML template * * @var string * @since 1.0.0 */ public $template_html; /** * @var array * @since 1.0.0 */ public $user = array(); /** * @var WP_User|false * @since 1.0.0 */ public $user_data; /** * @var string * @since 1.0.0 */ public $user_email; /** * @var string * @since 1.0.0 */ public $user_firstname; /** * @var string * @since 1.0.0 */ public $user_lastname; /** * @var string * @since 1.0.0 */ public $user_login; /** * @var string * @since 1.0.0 */ public $user_pass; /** * Alert when deprecated methods are used. * * This class as well as core classes extending it have been deprecated. All public and protected methods * have been changed to private and will be made accessible through this magic method which also emits a * deprecation warning. * * This public method has been intentionally marked as private to denote it's temporary lifespan. It will be * removed alongside this class in the next major release. * * @since 6.0.0 * * @access private * * @param string $name Name of the method being called. * @param array $args Arguments provided to the method. * @return void */ public function __call( $name, $args ) { _deprecated_function( __CLASS__ . '::' . $name, '6.0.0' ); if ( method_exists( $this, $name ) ) { $this->$name( ...$args ); } } /** * Check if the user has already earned this achievement used to prevent duplicates * * @since 3.4.1 * @since 3.17.4 Unknown. * * @return boolean */ private function has_user_earned() { global $wpdb; $count = (int) $wpdb->get_var( $wpdb->prepare( " SELECT COUNT( pm.meta_id ) FROM {$wpdb->postmeta} AS pm JOIN {$wpdb->prefix}lifterlms_user_postmeta AS upm ON pm.post_id = upm.meta_value WHERE pm.meta_key = '_llms_certificate_template' AND pm.meta_value = %d AND upm.meta_key = '_certificate_earned' AND upm.user_id = %d AND upm.post_id = %d LIMIT 1 ;", array( $this->certificate_template_id, $this->userid, $this->lesson_id ) ) ); /** * Deprecated. * * @since Unknown. * @deprecated 6.0.0 Filter `llms_certificate_has_user_earned` is deprecated in favor of `llms_earned_certificate_dupcheck`. * * @param boolean $has_earned Whether or not the certificate has been earned. * @param LLMS_Certificate_User $user_cert The user certificate object. */ return apply_filters_deprecated( 'llms_certificate_has_user_earned', array( ( $count >= 1 ), $this ), 'llms_earned_certificate_dupcheck' ); } /** * Sets up data needed to generate certificate. * * @since Unknown * @since 3.24.0 Unknown. * @deprecated 6.0.0 `LLMS_Certificate_User::init()` is deprecated with no replacement. * * @param int $email_id ID of Certificate. * @param int $person_id ID of the user receiving the certificate. * @param int $lesson_id ID of associated lesson. * @return void */ private function init( $email_id, $person_id, $lesson_id ) { global $wpdb; $email_content = get_post( $email_id ); $email_meta = get_post_meta( $email_content->ID ); $this->certificate_template_id = $email_id; $this->lesson_id = $lesson_id; $this->title = $email_content->post_title; $this->certificate_title = $email_meta['_llms_certificate_title'][0] ?? $email_content->post_title; $this->content = $email_content->post_content; $this->image = $email_meta['_llms_certificate_image'][0] ?? ''; $this->userid = $person_id; $this->user = get_user_meta( $person_id ); $this->user_data = get_userdata( $person_id ); $this->user_firstname = ( '' != $this->user['first_name'][0] ? $this->user['first_name'][0] : $this->user['nickname'][0] ); $this->user_lastname = ( '' != $this->user['last_name'][0] ? $this->user['last_name'][0] : '' ); $this->user_email = $this->user_data->data->user_email; $this->template_html = 'certificates/template.php'; $this->email_content = $email_content->post_content; $this->account_link = get_permalink( llms_get_page_id( 'myaccount' ) ); $this->user_login = $this->user_data->user_login; } /** * Award the cert to a user. * * @since Unknown * @deprecated 6.0.0 `LLMS_Certificate_User::trigger()` is deprecated with no replacement. * * @param int $user_id ID of the user receiving the certificate. * @param int $email_id ID of the certificate. * @param int $lesson_id ID of the associated lesson. * * @return void */ private function trigger( $user_id, $email_id, $lesson_id ) { $this->init( $email_id, $user_id, $lesson_id ); // Only award cert if the user hasn't already earned it. if ( $this->has_user_earned() ) { return; } if ( $user_id ) { $this->object = new WP_User( $user_id ); $this->user_email = stripslashes( $this->object->user_email ); $this->recipient = $this->user_email; } if ( ! $this->is_enabled() ) { return; } $this->create( $this->get_content() ); } /** * get_content_html function. * * @since 1.0.0 * @since 3.17.4 Unknown. * @since 5.0.0 Merge the [llms-user] (and others) shortcode. * @deprecated 6.0.0 `LLMS_Certificate_User::get_content_html()` is deprecated with no replacement. * * @return string */ private function get_content_html() { add_filter( 'llms_user_info_shortcode_user_id', array( $this, 'set_shortcode_user' ) ); $codes = apply_filters( 'llms_certificate_merge_codes', array( '{site_title}' => $this->get_blogname(), '{user_login}' => $this->user_login, '{site_url}' => $this->account_link, '{first_name}' => $this->user_firstname, '{last_name}' => $this->user_lastname, '{email_address}' => $this->user_email, '{student_id}' => $this->userid, '{current_date}' => date_i18n( get_option( 'date_format' ), current_time( 'timestamp' ) ), ), $this ); $this->find = array_keys( $codes ); $this->replace = array_values( $codes ); $content = $this->format_string( $this->content ); // In certain circumstances shortcodes won't be registered yet. LLMS_Shortcodes::init(); ob_start(); llms_get_template( $this->template_html, array( 'email_message' => do_shortcode( $content ), 'title' => $this->title, 'image' => $this->image, ) ); remove_filter( 'llms_user_info_shortcode_user_id', array( $this, 'set_shortcode_user' ) ); return ob_get_clean(); } /** * Set the user ID used by [llms-user] to the user earning the certificate. * * @since 5.0.0 * @deprecated 6.0.0 `LLMS_Certificate_User::set_shortcode_user()` is deprecated with no replacement. * * @param int $uid WP_User ID of the current user. * @return int */ private function set_shortcode_user( $uid ) { return $this->userid; } }
Expand full source code Collapse full source code View on GitHub
Methods Methods
- __call — Alert when deprecated methods are used.
- __construct — Constructor
- get_content_html — get_content_html function. — deprecated
- has_user_earned — Check if the user has already earned this achievement used to prevent duplicates
- init — Sets up data needed to generate certificate. — deprecated
- set_shortcode_user — Set the user ID used by [llms-user] to the user earning the certificate. — deprecated
- trigger — Award the cert to a user. — deprecated
Changelog Changelog
Version | Description |
---|---|
6.0.0 | Class LLMS_Certificate_User is deprecated with no direct replacement. |
3.30.3 | Explicitly define class properties. |
1.0.0 | Introduced. |