예제 #1
0
/**
 * Handle showing the box that allows a user to mark a unit as completed.
 */
function WPCW_units_processUnitContent($content)
{
    // #### Ensure we're only showing a course unit, a single item
    if (!is_single() || 'course_unit' != get_post_type()) {
        return $content;
    }
    // Use object to handle the rendering of the unit on the frontend.
    include_once WPCW_plugin_getPluginDirPath() . 'classes/class_frontend_unit.inc.php';
    global $post;
    $fe = new WPCW_UnitFrontend($post);
    // #### Get associated data for this unit. No course/module data, then it's not a unit
    if (!$fe->check_unit_doesUnitHaveParentData()) {
        return $content;
    }
    // #### Ensure we're logged in
    if (!$fe->check_user_isUserLoggedIn()) {
        return $fe->message_user_notLoggedIn();
    }
    // #### User not allowed access to content, so certainly can't say they've done this unit.
    if (!$fe->check_user_canUserAccessCourse()) {
        return $fe->message_user_cannotAccessCourse();
    }
    // #### Is user allowed to access this unit yet?
    if (!$fe->check_user_canUserAccessUnit()) {
        return $fe->message_user_cannotAccessUnit();
    }
    // ### Do the remaining rendering...
    return $fe->render_detailsForUnit($content);
}
예제 #2
0
 /**
  * Renders WP-Coursware unit detail over [op-courseware] shortcode
  * @return string
  */
 public static function renderCoursewareUnitDetails()
 {
     global $post;
     if (class_exists('WPCW_UnitFrontend')) {
         $fe = new WPCW_UnitFrontend($post);
         return $fe->render_detailsForUnit("");
     }
 }
/**
 * Function called when user starting a quiz and needs to kick off the timer.
 */
function WPCW_AJAX_units_handleQuizTimerBegin()
{
    // Security check
    if (!wp_verify_nonce(WPCW_arrays_getValue($_POST, 'progress_nonce'), 'wpcw-progress-nonce')) {
        die(__('Security check failed!', 'wp_courseware'));
    }
    // Get unit and quiz ID
    $unitID = intval(WPCW_arrays_getValue($_POST, 'unitid'));
    $quizID = intval(WPCW_arrays_getValue($_POST, 'quizid'));
    // Get the post object for this quiz item.
    $post = get_post($unitID);
    if (!$post) {
        echo WPCW_UnitFrontend::message_createMessage_error(__('Error - could not start the timer for the quiz.', 'wp_courseware') . ' ' . __('Could not find training unit.', 'wp_courseware'));
        die;
    }
    // Initalise the unit details
    $fe = new WPCW_UnitFrontend($post);
    // #### Get associated data for this unit. No course/module data, then it's not a unit
    if (!$fe->check_unit_doesUnitHaveParentData()) {
        echo WPCW_UnitFrontend::message_createMessage_error(__('Error - could not start the timer for the quiz.', 'wp_courseware') . ' ' . __('Could not find course details for unit.', 'wp_courseware'));
        die;
    }
    // #### User not allowed access to content
    if (!$fe->check_user_canUserAccessCourse()) {
        echo $fe->message_user_cannotAccessCourse();
        die;
    }
    // #### See if we're in a position to retake this quiz?
    if (!$fe->check_quizzes_canUserRequestRetake()) {
        echo WPCW_UnitFrontend::message_createMessage_error(__('Error - could not start the timer for the quiz.', 'wp_courseware') . ' ' . __('You are not permitted to retake this quiz.', 'wp_courseware'));
        die;
    }
    // Trigger the upgrade to progress so that we can start the quiz, and trigger the timer.
    $fe->update_quizzes_beginQuiz();
    // Only complete if allowed to continue.
    echo $fe->render_detailsForUnit(false, true);
    die;
}