当前位置: 首页>>代码示例>>PHP>>正文


PHP WooThemes_Sensei_Utils::sensei_grade_quiz_auto方法代码示例

本文整理汇总了PHP中WooThemes_Sensei_Utils::sensei_grade_quiz_auto方法的典型用法代码示例。如果您正苦于以下问题:PHP WooThemes_Sensei_Utils::sensei_grade_quiz_auto方法的具体用法?PHP WooThemes_Sensei_Utils::sensei_grade_quiz_auto怎么用?PHP WooThemes_Sensei_Utils::sensei_grade_quiz_auto使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在WooThemes_Sensei_Utils的用法示例。


在下文中一共展示了WooThemes_Sensei_Utils::sensei_grade_quiz_auto方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: sensei_complete_quiz

    public function sensei_complete_quiz()
    {
        global $post, $woothemes_sensei, $current_user;
        // Default grade
        $grade = 0;
        // Get Quiz Questions
        $lesson_quiz_questions = $woothemes_sensei->post_types->lesson->lesson_quiz_questions($post->ID);
        $quiz_lesson_id = absint(get_post_meta($post->ID, '_quiz_lesson', true));
        // Get quiz grade type
        $quiz_grade_type = get_post_meta($post->ID, '_quiz_grade_type', true);
        // Get quiz pass setting
        $pass_required = get_post_meta($post->ID, '_pass_required', true);
        // Get quiz pass mark
        $quiz_passmark = abs(round(doubleval(get_post_meta($post->ID, '_quiz_passmark', true)), 2));
        // Handle Quiz Completion
        if (isset($_POST['quiz_complete']) && wp_verify_nonce($_POST['woothemes_sensei_complete_quiz_noonce'], 'woothemes_sensei_complete_quiz_noonce')) {
            $sanitized_submit = esc_html($_POST['quiz_complete']);
            $questions_asked = array_filter(array_map('absint', $_POST['questions_asked']));
            $questions_asked_string = implode(',', $questions_asked);
            switch ($sanitized_submit) {
                case apply_filters('sensei_complete_quiz_text', __('Complete Quiz', 'woothemes-sensei')):
                    // Mark the Lesson as in-progress (if it isn't already), the entry is needed for WooThemes_Sensei_Utils::sensei_grade_quiz_auto() (optimise at some point?)
                    $activity_logged = WooThemes_Sensei_Utils::sensei_start_lesson($quiz_lesson_id);
                    $lesson_status = 'ungraded';
                    // Default when completing a quiz
                    // Save questions that were asked in this quiz
                    if (!empty($questions_asked_string)) {
                        update_comment_meta($activity_logged, 'questions_asked', $questions_asked_string);
                    }
                    // Save Quiz Answers
                    if (isset($_POST['sensei_question'])) {
                        WooThemes_Sensei_Utils::sensei_save_quiz_answers($_POST['sensei_question']);
                    }
                    // Grade quiz
                    // 3rd arg is count of total number of questions but it's not used by sensei_grade_quiz_auto()
                    $grade = WooThemes_Sensei_Utils::sensei_grade_quiz_auto($post->ID, $_POST['sensei_question'], count($lesson_quiz_questions), $quiz_grade_type);
                    $lesson_metadata = array();
                    // Get Lesson Grading Setting
                    if (is_wp_error($grade) || 'auto' != $quiz_grade_type) {
                        $lesson_status = 'ungraded';
                        // Quiz is manually graded and this was a user submission
                    } else {
                        // Quiz has been automatically Graded
                        if ($pass_required) {
                            // Student has reached the pass mark and lesson is complete
                            if ($quiz_passmark <= $grade) {
                                $lesson_status = 'passed';
                            } else {
                                $lesson_status = 'failed';
                            }
                            // End If Statement
                        } else {
                            $lesson_status = 'graded';
                        }
                        $lesson_metadata['grade'] = $grade;
                        // Technically already set as part of "WooThemes_Sensei_Utils::sensei_grade_quiz_auto()" above
                    }
                    WooThemes_Sensei_Utils::update_lesson_status($current_user->ID, $quiz_lesson_id, $lesson_status, $lesson_metadata);
                    switch ($lesson_status) {
                        case 'passed':
                        case 'graded':
                            do_action('sensei_user_lesson_end', $current_user->ID, $quiz_lesson_id);
                            break;
                    }
                    do_action('sensei_user_quiz_submitted', $current_user->ID, $post->ID, $grade, $quiz_passmark, $quiz_grade_type);
                    break;
                case apply_filters('sensei_save_quiz_text', __('Save Quiz', 'woothemes-sensei')):
                    $activity_logged = WooThemes_Sensei_Utils::sensei_start_lesson($quiz_lesson_id);
                    if ($activity_logged) {
                        // Save questions that were asked in this quiz
                        if (!empty($questions_asked_string)) {
                            update_comment_meta($activity_logged, 'questions_asked', $questions_asked_string);
                        }
                        if (isset($_POST['sensei_question'])) {
                            WooThemes_Sensei_Utils::sensei_save_quiz_answers($_POST['sensei_question']);
                        }
                    }
                    // Need message in case the data wasn't saved?
                    $this->messages = '<div class="sensei-message note">' . apply_filters('sensei_quiz_saved_text', __('Quiz Saved Successfully.', 'woothemes-sensei')) . '</div>';
                    break;
                case apply_filters('sensei_reset_quiz_text', __('Reset Quiz', 'woothemes-sensei')):
                    // Don't want to remove the lesson status (such as start meta data etc), just remove the answers, the questions asked meta and any grade meta
                    // Delete quiz answers, this auto deletes the corresponding meta data, such as the question/answer grade
                    WooThemes_Sensei_Utils::sensei_delete_quiz_answers($post->ID, $user_id);
                    WooThemes_Sensei_Utils::update_lesson_status($current_user->ID, $quiz_lesson_id, 'in-progress', array('questions_asked' => '', 'grade' => ''));
                    // Run any action on quiz/lesson reset (previously this didn't occur on resetting a quiz, see resetting a lesson in sensei_complete_lesson()
                    do_action('sensei_user_lesson_reset', $current_user->ID, $quiz_lesson_id);
                    $this->messages = '<div class="sensei-message note">' . apply_filters('sensei_quiz_reset_text', __('Quiz Reset Successfully.', 'woothemes-sensei')) . '</div>';
                    break;
                default:
                    // Nothing
                    break;
            }
            // End Switch Statement
            // Refresh page to avoid re-posting
            ?>
			<script type="text/javascript"> window.location = '<?php 
            echo get_permalink($post->ID);
            ?>
'; </script>
//.........这里部分代码省略.........
开发者ID:AlecBeltrami,项目名称:sensei,代码行数:101,代码来源:class-woothemes-sensei-frontend.php

示例2: submit_answers_for_grading

 /**
  * Submit the users quiz answers for grading
  *
  * This function accepts users answers and stores it but also initiates the grading
  * if a quiz can be graded automatically it will, if not the answers can be graded by the teacher.
  *
  * @since 1.7.4
  * @access public
  *
  * @param array $quiz_answers
  * @param array $files from $_FILES
  * @param int $user_id
  * @param int $lesson_id
  *
  * @return bool $answers_submitted
  */
 public static function submit_answers_for_grading($quiz_answers, $files = array(), $lesson_id, $user_id = 0)
 {
     $answers_submitted = false;
     // get the user_id if none was passed in use the current logged in user
     if (!intval($user_id) > 0) {
         $user_id = get_current_user_id();
     }
     // make sure the parameters are valid before continuing
     if (empty($lesson_id) || empty($user_id) || 'lesson' != get_post_type($lesson_id) || !get_userdata($user_id) || !is_array($quiz_answers)) {
         return false;
     }
     global $post, $woothemes_sensei;
     // Default grade
     $grade = 0;
     // Get Quiz ID
     $quiz_id = $woothemes_sensei->lesson->lesson_quizzes($lesson_id);
     // Get quiz grade type
     $quiz_grade_type = get_post_meta($quiz_id, '_quiz_grade_type', true);
     // Get quiz pass setting
     $pass_required = get_post_meta($quiz_id, '_pass_required', true);
     // Get the minimum percentage need to pass this quiz
     $quiz_pass_percentage = abs(round(doubleval(get_post_meta($quiz_id, '_quiz_passmark', true)), 2));
     // Handle Quiz Completion submit for grading
     if (isset($_POST['questions_asked']) && is_array($_POST['questions_asked'])) {
         $questions_asked = array_filter(array_map('absint', $_POST['questions_asked']));
     } else {
         $questions_asked = array_keys($quiz_answers);
     }
     $questions_asked_string = implode(',', $questions_asked);
     // Save Quiz Answers for grading, the save function also calls the sensei_start_lesson
     self::save_user_answers($quiz_answers, $files, $lesson_id, $user_id);
     // Save questions that were asked in this quiz
     $user_lesson_status = WooThemes_Sensei_Utils::user_lesson_status($lesson_id, $user_id);
     if (isset($user_lesson_status->comment_ID)) {
         update_comment_meta($user_lesson_status->comment_ID, 'questions_asked', $questions_asked_string);
     }
     // Grade quiz
     $grade = WooThemes_Sensei_Utils::sensei_grade_quiz_auto($quiz_id, $quiz_answers, 0, $quiz_grade_type);
     // Get Lesson Grading Setting
     $lesson_metadata = array();
     $lesson_status = 'ungraded';
     // Default when completing a quiz
     // At this point the answers have been submitted
     $answers_submitted = true;
     // if this condition is false the quiz should manually be graded by admin
     if ('auto' == $quiz_grade_type && !is_wp_error($grade)) {
         // Quiz has been automatically Graded
         if ('on' == $pass_required) {
             // Student has reached the pass mark and lesson is complete
             if ($quiz_pass_percentage <= $grade) {
                 $lesson_status = 'passed';
             } else {
                 $lesson_status = 'failed';
             }
             // End If Statement
         } else {
             // Student only has to partake the quiz
             $lesson_status = 'graded';
         }
         $lesson_metadata['grade'] = $grade;
         // Technically already set as part of "WooThemes_Sensei_Utils::sensei_grade_quiz_auto()" above
     }
     // end if ! is_wp_error( $grade ...
     WooThemes_Sensei_Utils::update_lesson_status($user_id, $lesson_id, $lesson_status, $lesson_metadata);
     if ('passed' == $lesson_status || 'graded' == $lesson_status) {
         /**
          * Lesson end action hook
          *
          * This hook is fired after a lesson quiz has been graded and the lesson status is 'passed' OR 'graded'
          *
          * @param int $user_id
          * @param int $lesson_id
          */
         do_action('sensei_user_lesson_end', $user_id, $lesson_id);
     }
     /**
      * User quiz has been submitted
      *
      * Fires the end of the submit_answers_for_grading function. It will fire irrespective of the submission
      * results.
      *
      * @param int $user_id
      * @param int $quiz_id
      * @param string $grade
//.........这里部分代码省略.........
开发者ID:mattytemple,项目名称:YTC-Sensei,代码行数:101,代码来源:class-woothemes-sensei-quiz.php


注:本文中的WooThemes_Sensei_Utils::sensei_grade_quiz_auto方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。