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
424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 | 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. |