LLMS_Post_Instructors
LLMS_Post_Instructors class
Description Description
Allow interactions with the custom multi-author functionality currently enabled for Courses and Memberships only.
Rather than instantiating this class directly you should use LLMS_Course->instructors() or LLMS_Membership()->instructors()
Source Source
File: includes/models/model.llms.post.instructors.php
class LLMS_Post_Instructors { /** * WP Post ID * * @var int */ public $id; /** * Instance of the post (course or membership) * * @var LLMS_Post_Model */ public $post; /** * Constructor * * @since 3.13.0 * * @param LLMS_Post_Model|WP_Post|int $post Post object or ID. */ public function __construct( $post ) { // Setup a post if post id of WP_Post is passed in. if ( is_numeric( $post ) || is_a( $post, 'WP_Post' ) ) { $post = llms_get_post( $post ); } // Double check we have an LLMS_Post. if ( is_subclass_of( $post, 'LLMS_Post_Model' ) ) { $this->post = $post; $this->id = $post->get( 'id' ); } } /** * Retrieve course instructor information * * @since 3.13.0 * @since 3.23.0 Unknown. * @since 4.2.0 Normalize return data when no instructor data is saved. * * @param boolean $exclude_hidden If true, excludes hidden instructors from the return array. * @return array[] { * Array or instructor data arrays. * * @type int $id WP_User ID of the instructor user. * @type string $visibility Display visibility option for the instructor. * @type string $label User input display noun for the instructor. EG: "Author" or "Coach" or "Instructor". * @type string $name WP_User Display Name. * } */ public function get_instructors( $exclude_hidden = false ) { $instructors = $this->post->get( 'instructors' ); // If empty, respond with the course author in an array. if ( ! $instructors ) { $author_id = $this->post->get( 'author' ); $author = get_userdata( $author_id ); $instructors = array( wp_parse_args( array( 'id' => $author_id, 'name' => $author ? $author->display_name : '', ), llms_get_instructors_defaults() ), ); } if ( $exclude_hidden ) { foreach ( $instructors as $key => $instructor ) { if ( 'hidden' === $instructor['visibility'] ) { unset( $instructors[ $key ] ); } } } return $instructors; } /** * Format an instructors array for saving to the db. * * @since 3.25.0 * * @param array $instructors Array of full (or partial) instructor data. * @return array */ public function pre_set_instructors( $instructors = array() ) { /** * We cannot allow no instructors to exist * so we'll revert to the default `post_author`. */ if ( ! $instructors ) { // Clear so the getter will retrieve the default author. $this->post->set( 'instructors', array() ); $instructors = $this->get_instructors(); } // Allow partial arrays to be passed & we'll fill em up with defaults. foreach ( $instructors as $i => &$instructor ) { $instructor = wp_parse_args( $instructor, llms_get_instructors_defaults() ); $instructor['id'] = absint( $instructor['id'] ); // Remove instructors without an ID. if ( empty( $instructor['id'] ) ) { unset( $instructors[ $i ] ); } } return array_values( $instructors ); } /** * Save instructor information * * @since 3.13.0 * @since 3.25.0 Unknown. * * @param array $instructors Array of course instructor information. */ public function set_instructors( $instructors = array() ) { $instructors = $this->pre_set_instructors( $instructors ); // Set the post_author to be the first author in the array. $this->post->set( 'author', $instructors[0]['id'] ); // Save the instructors array. $this->post->set( 'instructors', $instructors ); return $instructors; } }
Expand full source code Collapse full source code View on GitHub
Methods Methods
- __construct — Constructor
- get_instructors — Retrieve course instructor information
- pre_set_instructors — Format an instructors array for saving to the db.
- set_instructors — Save instructor information
Changelog Changelog
Version | Description |
---|---|
4.2.0 | Normalized return structure in get_instructors() when no instructor set. |
4.0.0 | Remove deprecated method get_defaults() . |
3.30.3 | Explicitly define class properties. |
3.13.0 | Introduced. |