LLMS_Generator_Courses::create_question( array $raw, obj $manager, int $author_id )
Creates a new question
Parameters Parameters
- $raw
-
(array) (Required) Raw question data.
- $manager
-
(obj) (Required) Question manager instance.
- $author_id
-
(int) (Optional) Author ID to use as a fallback if no raw author data supplied for the question. Default is
null. When not supplied the fall back will be on the current user ID.
Return Return
(int)
Source Source
File: includes/class-llms-generator-courses.php
protected function create_question( $raw, $manager, $author_id ) {
/**
* Filter raw question import data prior to generation
*
* @since 3.30.2
*
* @param array $raw Raw quiz data array.
* @param obj $manager Question manager instance.
* @param int $author_id Optional author ID to use as a fallback if no raw author data supplied for the question.
* @param LLMS_Generator $generator Generator instance.
*/
$raw = apply_filters( 'llms_generator_before_new_question', $raw, $manager, $author_id, $this );
unset( $raw['parent_id'] );
$question_id = $manager->create_question(
array_merge(
array(
'post_status' => 'publish',
'post_author' => $author_id,
),
$raw
)
);
if ( ! $question_id ) {
throw new Exception( __( 'Error creating the question post object.', 'lifterlms' ), self::ERROR_CREATE_POST );
}
$question = llms_get_post( $question_id );
$this->store_temp_id( $raw, $question );
if ( isset( $raw['choices'] ) ) {
foreach ( $raw['choices'] as $choice ) {
unset( $choice['question_id'] );
$question->create_choice( $this->maybe_sideload_choice_image( $choice, $question_id ) );
}
}
// Set all metadata.
foreach ( array_keys( $question->get_properties() ) as $key ) {
if ( isset( $raw[ $key ] ) ) {
$question->set( $key, $raw[ $key ] );
}
}
$this->sideload_images( $question, $raw );
/**
* Action triggered immediately following generation of a new question
*
* @since 3.30.2
*
* @param LLMS_Question $question Generated question object.
* @param array $raw Original raw question data array.
* @param obj $manager Question manager instance.
* @param LLMS_Generator $generator Generator instance.
*/
do_action( 'llms_generator_new_question', $question, $raw, $manager, $this );
return $question->get( 'id' );
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 4.7.0 | Attempt to sideload images found in the imported post's content and image choices. |
| 3.30.2 | Added hooks. |
| 3.3.0 | Introduced. |