LLMS_Achievements
Main Achievements singleton
Description Description
See also See also
- llms()->achievements()
Source Source
File: includes/class.llms.achievements.php
class LLMS_Achievements { use LLMS_Trait_Singleton, LLMS_Trait_Award_Default_Images; /** * List of available achievement types. * * @var array */ public $achievements = array(); /** * The ID for the award type. * * Used by {@see LLMS_Trait_Award_Default_Images}. * * @var string */ protected $award_type = 'achievement'; /** * Deprecated. * * @deprecated 6.0.0 Unused public class property `LLMS_Achievements::$content` is deprecated with no replacement. * * @var null */ public $content; /** * Constructor. * * @since 1.0.0 * @since 3.24.0 Unknown. * * @return void */ private function __construct() { $this->init(); } /** * Includes achievement class. * * @since 1.0.0 * @since 6.0.0 Removed loading of class files that don't instantiate their class in favor of autoloading. * * @return void */ public function init() { $this->achievements['LLMS_Achievement_User'] = include_once 'achievements/class.llms.achievement.user.php'; } /** * Get a list of achievement Achievement Template IDs for a given post. * * @since 3.24.0 * @since 5.3.3 Set the query limit to 500. * * @param array|int $post_ids Post IDs or single post ID to look for achievements by. * @param bool $include_children If true, will include course children (sections, lessons, and quizzes). * @return array */ public function get_achievements_by_post( $post_ids, $include_children = true ) { if ( ! is_array( $post_ids ) ) { $post_ids = array( $post_ids ); } $original_post_ids = $post_ids; if ( $include_children ) { foreach ( $post_ids as $post_id ) { if ( 'course' === get_post_type( $post_id ) ) { $course = llms_get_post( $post_id ); $post_ids = array_merge( $post_ids, $course->get_sections( 'ids' ), $course->get_lessons( 'ids' ), $course->get_quizzes() ); } } } /** * Filters the query args to retrieve the achievements by post. * * @since 5.3.3 * * @param array $args The query args to retrieve the achievements by post. * @param array|int $post_ids Post IDs or single post ID to look for achievements by. * @param bool $include_children If true, will include course children (sections, lessons, and quizzes). */ $query_args = apply_filters( 'llms_achievements_by_post_query_args', array( 'post_type' => 'llms_engagement', 'meta_query' => array( array( 'key' => '_llms_engagement_type', 'value' => 'achievement', ), array( 'compare' => 'IN', 'key' => '_llms_engagement_trigger_post', 'value' => $post_ids, ), ), 'posts_per_page' => 500, ), $original_post_ids, $include_children ); $query = new WP_Query( $query_args ); $achievements = array(); foreach ( $query->posts as $engagement ) { $achievements[] = get_post_meta( $engagement->ID, '_llms_engagement', true ); } return $achievements; } /** * Award an achievement to a user * * Calls trigger method passing arguments. * * @since 1.0.0 * @deprecated 6.0.0 `LLMS_Achievements::trigger_engagement()` is deprecated in favor of `LLMS_Engagement_Handler::handle_achievement()`. * * @param int $person_id WP_User ID. * @param int $achievement_id WP_Post ID of the achievement template. * @param int $related_post_id WP_Post ID of the related post, for example a lesson id. * @return void */ public function trigger_engagement( $person_id, $achievement_id, $related_post_id ) { _deprecated_function( 'LLMS_Achievements::trigger_engagement()', '6.0.0', 'LLMS_Engagement_Handler::handle_achievements()' ); LLMS_Engagement_Handler::handle_achievement( array( $person_id, $achievement_id, $related_post_id, null ) ); } }
Expand full source code Collapse full source code View on GitHub
Methods Methods
- __construct — Constructor.
- get_achievements_by_post — Get a list of achievement Achievement Template IDs for a given post.
- init — Includes achievement class.
- instance
- trigger_engagement — Award an achievement to a user — deprecated
Changelog Changelog
Version | Description |
---|---|
6.0.0 | Changes:
|
5.3.0 | Replace singleton code with LLMS_Trait_Singleton . |
3.24.0 | Unknown. |
1.0.0 | Introduced. |