/**
  * Assign appropriate CoursePress capabilities for roles
  *
  * @since 1.2.3.3.
  *
  */
 public function assign_role_capabilities($user_id, $role, $old_role)
 {
     $capability_types = self::$capabilities['instructor'];
     if ('administrator' == $role) {
         self::assign_admin_capabilities($user_id);
     } else {
         $user = new Instructor($user_id);
         $instructor_courses = $user->get_assigned_courses_ids();
         // Remove all CoursePress capabilities
         foreach ($capability_types as $key => $value) {
             $user->remove_cap($key);
         }
         // If they are an instructor, give them their appropriate capabilities back
         if (!empty($instructor_courses)) {
             CoursePress::instance()->assign_instructor_capabilities($user_id);
         }
     }
 }
<div class="cp_popup_inner">
	<div class="cp_popup_title cp_popup_congratulations_title"><?php 
_e('Congratulations', 'cp');
?>
</div>
	<?php 
global $coursepress;
$course_id = (int) $args['course_id'];
$course = new Course($course_id);
$dashboard_link = '<a href="' . esc_url($coursepress->get_student_dashboard_slug(true)) . '">' . __('Dashboard', 'cp') . '</a>';
$course_link = '<a href="' . esc_url(get_permalink($course_id)) . '">' . $course->details->post_title . '</a>';
?>
	<div class="cp_popup_success_message">
		<div class="congratulations-image">
			<img src="<?php 
echo esc_url(CoursePress::instance()->plugin_url . 'images/congrats-tick.png');
?>
" alt="<?php 
esc_attr_e('Congratulations image', 'cp');
?>
">
		</div
		<p><?php 
echo sprintf(__('You have successfully enrolled in %s', 'cp'), $course_link);
?>
<br/>
			<?php 
_e('You will receive an e-mail confirmation shortly.', 'cp');
?>
</p>
<?php

//$course_id			 = do_shortcode( '[get_parent_course_id]' );
//$course_id			 = (int) $course_id;
CoursePress::instance()->check_access($course_id);
$progress = do_shortcode('[course_progress course_id="' . $course_id . '"]');
do_shortcode('[course_units_loop]');
//required for getting unit results
?>

<?php 
echo do_shortcode('[course_unit_archive_submenu]');
$complete_message = '';
if (100 == (int) $progress) {
    $complete_message = '<div class="unit-archive-course-complete cp-wrap"><i class="fa fa-check-circle"></i> ' . __('Course Complete', 'cp') . '</div>';
}
?>
<h2><?php 
_e('Course Units', 'cp');
echo ' ' . $complete_message;
?>
</h2>
<div class="units-archive">
	<ul class="units-archive-list">
		<?php 
if (have_posts()) {
    ?>
			<?php 
    while (have_posts()) {
        the_post();
        $draft = get_post_status() !== 'publish';
 function mce_editor_style($url)
 {
     global $wp_version;
     // Only on these pages
     $detect_pages = array('coursepress_page_course_details', 'coursepress-pro_page_course_details');
     $page = get_current_screen()->id;
     $tab = empty($_GET['tab']) ? '' : $_GET['tab'];
     if (in_array($page, $detect_pages)) {
         if (!empty($url)) {
             $url .= ',';
         }
         $url .= CoursePress::instance()->plugin_url . 'css/editor_style_fix.css,';
         if (3.9 <= (double) $wp_version) {
         } else {
             $url .= CoursePress::instance()->plugin_url . 'css/editor_style_fix_38.css,';
         }
     }
     return $url;
 }
    public static function front_main($data)
    {
        $data->name = __CLASS__;
        $preview_data = CoursePress::instance()->preview_data;
        $preview = false;
        if (isset($preview_data) && !empty($preview_data)) {
            $response = array();
            $all_responses = array();
            $preview = true;
        } else {
            $response = text_input_module::get_response(get_current_user_id(), $data->ID);
            $all_responses = text_input_module::get_response(get_current_user_id(), $data->ID, 'private', -1);
        }
        $grade = false;
        if (count($response) == 0) {
            global $coursepress;
            if ($coursepress->is_preview(Unit_Module::get_module_unit_id($data->ID))) {
                $enabled = 'disabled';
            } else {
                $enabled = 'enabled';
            }
        } else {
            $enabled = 'disabled';
            $grade = Unit_Module::get_response_grade($response->ID);
        }
        ?>
		<div id="module-<?php 
        echo $data->ID;
        ?>
" class="<?php 
        echo $data->name;
        ?>
 front-single-module<?php 
        echo radio_input_module::FRONT_SAVE == true ? '-save' : '';
        ?>
">
			<?php 
        if ($data->post_title != '' && parent::display_title_on_front($data)) {
            ?>
				<h2 class="module_title"><?php 
            echo $data->post_title;
            ?>
</h2>
			<?php 
        }
        ?>

			<?php 
        if ($data->post_content != '') {
            ?>
				<div class="module_description"><?php 
            echo apply_filters('element_content_filter', apply_filters('the_content', $data->post_content));
            ?>
</div>
			<?php 
        }
        ?>
			<ul class='radio_answer_check_li radio_answer_group' <?php 
        echo $data->mandatory_answer == 'yes' ? 'data-mandatory="yes"' : 'data-mandatory="no"';
        ?>
>
				<?php 
        $student_answer = -1;
        if (!empty($data) && !empty($data->checked_answer) && !empty($data->answers)) {
            if (!empty($response)) {
                $student_answer = array_search($response->post_content, $data->answers);
            }
            $correct_answer = array_search($data->checked_answer, $data->answers);
            foreach ($data->answers as $key => $answer) {
                $correct = 'unanswered';
                if (-1 != $student_answer && $key == $student_answer && $key == $correct_answer) {
                    // $correct = $answer == $response->post_content ? 'correct' : 'unanswered';
                    $correct = 'correct';
                } else {
                    if (-1 != $student_answer && $key == $student_answer) {
                        $correct = 'incorrect';
                    }
                }
                ?>
						<li>
							<div class="<?php 
                echo $correct;
                ?>
">
								<input class="radio_answer_check" type="radio" name="<?php 
                echo $data->name . '_front_' . $data->ID;
                ?>
" value='<?php 
                echo esc_attr($answer);
                ?>
' <?php 
                echo $enabled;
                ?>
 <?php 
                echo isset($response->post_content) && trim($response->post_content) == $answer ? 'checked' : '';
                ?>
 /><?php 
                echo $answer;
                ?>
							</div>
						</li>
					<?php 
            }
        }
        ?>
			</ul>
			<?php 
        echo parent::grade_status_and_resubmit($data, $grade, $all_responses, $response, false);
        ?>
		</div>
	<?php 
    }
 public static function enroll($course_id, $student_id, $class = '', $group = '')
 {
     $current_time = current_time('mysql');
     $global_option = !is_multisite();
     /**
      * Update metadata with relevant details.
      */
     update_user_option($student_id, 'enrolled_course_date_' . $course_id, $current_time, $global_option);
     //Link courses and student ( in order to avoid custom tables ) for easy MySql queries ( get courses stats, student courses, etc. )
     update_user_option($student_id, 'enrolled_course_class_' . $course_id, $class, $global_option);
     update_user_option($student_id, 'enrolled_course_group_' . $course_id, $group, $global_option);
     update_user_option($student_id, 'role', 'student', $global_option);
     //alternative to roles used
     /**
      * Filter can be used to override email details.
      */
     $user_info = get_userdata($student_id);
     $email_args = apply_filters('coursepress_student_enrollment_email_args', array('email_type' => 'enrollment_confirmation', 'course_id' => $course_id, 'dashboard_address' => CoursePress::instance()->get_student_dashboard_slug(true), 'student_first_name' => $user_info->first_name, 'student_last_name' => $user_info->last_name, 'student_email' => $user_info->user_email));
     /**
      * If a valid email address is given, use it to email the student with enrollment information.
      */
     if (is_email($email_args['student_email'])) {
         coursepress_send_email($email_args);
     }
     /**
      * Setup actions for when a student enrolls.
      * Can be used to create notifications or tracking student actions.
      */
     $instructors = Course::get_course_instructors_ids($course_id);
     do_action('student_enrolled_instructor_notification', $student_id, $course_id, $instructors);
     do_action('student_enrolled_student_notification', $student_id, $course_id);
     /**
      * Perform action after a Student is enrolled.
      *
      * @since 1.2.2
      */
     do_action('coursepress_student_enrolled', $student_id, $course_id);
     return true;
 }
 function delete_instructor($delete_user = true)
 {
     /* if ( $delete_user ) {
     	  wp_delete_user( $this->ID ); //without reassign
     	  }else{//just delete the meta which says that user is an instructor */
     $global_option = !is_multisite();
     delete_user_option($this->ID, 'role_ins', 'instructor', $global_option);
     // Legacy
     delete_user_meta($this->ID, 'role_ins', 'instructor');
     $this->unassign_from_all_courses();
     CoursePress::instance()->drop_instructor_capabilities($this->ID);
     //}
 }
 function disable_post_voting_buttons($inject)
 {
     global $post;
     $ignore_types = array('course', 'unit', 'virtual_page', 'discussions', 'module', 'certificates', 'notifications', 'module_response');
     if (!empty($post) && isset($post->post_type) && in_array($post->post_type, $ignore_types)) {
         return false;
     }
     $coursepress_slugs = array(CoursePress::instance()->get_enrollment_process_slug(), CoursePress::instance()->get_login_slug(), CoursePress::instance()->get_signup_slug(), CoursePress::instance()->get_student_dashboard_slug(), CoursePress::instance()->get_student_settings_slug());
     if (in_array($post->post_name, $coursepress_slugs)) {
         return false;
     }
     return $inject;
 }
    public static function front_main($data)
    {
        $data->name = __CLASS__;
        $preview_data = CoursePress::instance()->preview_data;
        $preview = false;
        if (isset($preview_data) && !empty($preview_data)) {
            $response = array();
            $all_responses = array();
            $preview = true;
        } else {
            $response = file_input_module::get_response(get_current_user_id(), $data->ID);
            $all_responses = file_input_module::get_response(get_current_user_id(), $data->ID, 'private', -1);
        }
        $grade = false;
        if (count($response) == 0) {
            global $coursepress;
            if ($coursepress->is_preview(Unit_Module::get_module_unit_id($data->ID))) {
                $enabled = 'disabled';
            } else {
                $enabled = 'enabled';
            }
        } else {
            $enabled = 'disabled';
            $grade = Unit_Module::get_response_grade($response->ID);
        }
        ?>
		<div id="module-<?php 
        echo $data->ID;
        ?>
" class="<?php 
        echo $data->name;
        ?>
 front-single-module<?php 
        echo file_input_module::FRONT_SAVE == true ? '-save' : '';
        ?>
">
			<?php 
        if ($data->post_title != '' && parent::display_title_on_front($data)) {
            ?>
				<h2 class="module_title"><?php 
            echo $data->post_title;
            ?>
</h2>
			<?php 
        }
        ?>

			<?php 
        if ($data->post_content != '') {
            ?>
				<div class="module_description"><?php 
            echo apply_filters('element_content_filter', apply_filters('the_content', $data->post_content));
            ?>
</div>
			<?php 
        }
        ?>

			<div class="module_file_input">
				<?php 
        if (count($response) == 0) {
            ?>
					<input type="file" <?php 
            echo $data->mandatory_answer == 'yes' ? 'data-mandatory="yes"' : 'data-mandatory="no"';
            ?>
 name="<?php 
            echo $data->name . '_front_' . $data->ID;
            ?>
" id="<?php 
            echo $data->name . '_front_' . $data->ID;
            ?>
" <?php 
            echo $enabled;
            ?>
 />
				<?php 
        } else {
            _e('File successfully uploaded. ', 'cp');
            // printf( '<a target="_blank" href="%s" style="padding-left: 20px">%s</a>', $response->guid, __( 'View/Download File', 'cp' ) );
        }
        ?>
			</div>

			<?php 
        parent::grade_status_and_resubmit($data, $grade, $all_responses, $response);
        ?>

		</div>

		<?php 
        /* $unit_module_main = new Unit_Module();
        
        		  if ( is_object( $response ) && !empty( $response ) ) {
        
        		  $comment = Unit_Module::get_response_comment( $response->ID );
        		  if ( !empty( $comment ) ) {
        		  ?>
        		  <div class="response_comment_front"><?php echo $comment; ?></div>
        		  <?php
        		  }
        		  } */
        ?>

	<?php 
    }
        public static function grade_status_and_resubmit($data, $grade, $responses, $last_public_response = false, $show_grade = true, $total_correct = false, $total_answers = false)
        {
            $number_of_answers = (int) count($responses) + (int) count($last_public_response);
            // Allow unlimited resubmits while grade is pending
            $allowed_resubmits = array('file_input_module', 'text_input_module');
            $preview_data = CoursePress::instance()->preview_data;
            if (isset($preview_data) && !empty($preview_data)) {
                $content = '
					<div class="module_grade">
						<div class="module_grade_left">
						' . esc_html__('Preview only', 'cp') . '
						</div>
						<div class="module_grade_right">
						</div>
					</div>
				';
                echo $content;
                return;
            }
            $limit_attempts = $data->limit_attempts;
            //yes or no
            $limit_attempts_value = $data->limit_attempts_value;
            $attempts_remaining = $limit_attempts_value - $number_of_answers;
            $minimum_grade = isset($data->minimum_grade_required) ? (int) $data->minimum_grade_required : 100;
            if (isset($limit_attempts) && $limit_attempts == 'yes' && 'yes' == $data->gradable_answer) {
                $limit_attempts_value = $limit_attempts_value;
            } else {
                $limit_attempts_value = -1;
                //unlimited
            }
            $allow_free_resubmit = in_array($data->name, $allowed_resubmits) && empty($grade) && 0 < $number_of_answers;
            if (!empty($_GET['resubmitting']) && 'yes' == $data->gradable_answer || $grade && 'yes' == $data->gradable_answer || $allow_free_resubmit) {
                if ($grade['grade'] < $data->minimum_grade_required && 'yes' == $data->mandatory_answer) {
                    self::mandatory_message($data);
                }
                $grade_value = isset($grade['grade']) ? $grade['grade'] : -1;
                ?>
				<div class="module_grade">
					<div class="module_grade_left">
						<?php 
                if ($grade_value < $minimum_grade) {
                    if ($number_of_answers < $limit_attempts_value || $limit_attempts_value == -1 || $allow_free_resubmit) {
                        global $wp;
                        //								$class_name = get_class( $this );
                        //								$response     = call_user_func( $class_name.'::get_response', get_current_user_id(), $data->ID );
                        $unit_id = wp_get_post_parent_id($data->ID);
                        $course_id = get_post_meta($unit_id, 'course_id', true);
                        $module_id = $data->ID;
                        $paged = isset($wp->query_vars['paged']) ? absint($wp->query_vars['paged']) : 1;
                        $permalink = trailingslashit(trailingslashit(get_permalink($unit_id)) . 'page/' . trailingslashit($paged));
                        if (empty($_GET['resubmitting'])) {
                            $resubmit_url = $permalink . '?resubmit_answer=' . $last_public_response->ID . '&resubmit_redirect_to=' . $permalink . '&m=' . $module_id . '&c=' . $course_id . '&u=' . $unit_id;
                            ?>
									<a href="<?php 
                            echo wp_nonce_url($resubmit_url, 'resubmit_answer', 'resubmit_nonce');
                            ?>
" class="resubmit_response"><?php 
                            _e('Submit different answer', 'cp');
                            ?>
</a>
									<?php 
                        } else {
                            $previous_response = !empty($_GET['previous_response']) ? $_GET['previous_response'] : '';
                            $resubmit_url = $permalink . '?resubmit_cancel=' . $previous_response . '&resubmit_redirect_to=' . $permalink . '&m=' . $module_id . '&c=' . $course_id . '&u=' . $unit_id;
                            if ($module_id == $_GET['resubmitting']) {
                                ?>
										<a name="answer-<?php 
                                echo $previous_response;
                                ?>
" href="<?php 
                                echo wp_nonce_url($resubmit_url, 'resubmit_answer', 'resubmit_nonce');
                                ?>
" class="resubmit_response cancel"><?php 
                                _e('Cancel', 'cp');
                                ?>
</a>
										<?php 
                            }
                        }
                        if ($attempts_remaining > 0 && !$allow_free_resubmit) {
                            if ($attempts_remaining == 1) {
                                _e('(1 attempt remaining)', 'cp');
                            } else {
                                printf(__('(%d attempts remaining)', 'cp'), $attempts_remaining);
                            }
                        }
                    }
                }
                ?>
					</div>
					<div class="module_grade_right">
						<?php 
                if ($show_grade && !$allow_free_resubmit) {
                    ?>
							<?php 
                    echo __('Graded: ', 'cp') . $grade['grade'] . '%';
                    if (isset($data->minimum_grade_required) && is_numeric($data->minimum_grade_required)) {
                        if ($grade['grade'] >= $data->minimum_grade_required) {
                            ?>
									<span class="passed_element">(<?php 
                            _e('Passed', 'cp');
                            ?>
)</span>
									<?php 
                        } else {
                            if ($attempts_remaining > 0) {
                                ?>
										<span class="failed_element">(<?php 
                                _e('Not yet passed', 'cp');
                                ?>
)</span>
										<?php 
                            } else {
                                ?>
										<span class="failed_element">(<?php 
                                _e('Not Passed', 'cp');
                                ?>
)</span>
										<?php 
                            }
                        }
                    }
                    ?>

							<?php 
                }
                if ((!empty($total_correct) || 0 == $total_correct) && !empty($total_answers)) {
                    printf(__('%d of %d correct', 'cp'), $total_correct, $total_answers);
                }
                ?>
					</div>
				</div>
				<?php 
            } else {
                // if ( $data->gradable_answer && 'enabled' != $enabled ) {
                if ('yes' == $data->gradable_answer) {
                    if ('yes' == $data->mandatory_answer) {
                        self::mandatory_message($data);
                    }
                    if ((int) count($responses) > 1) {
                        ?>
						<div class="module_grade"><?php 
                        echo __('Grade Pending.', 'cp');
                        ?>
</div>
						<?php 
                    }
                }
            }
        }
 function make_pdf($html, $args = array())
 {
     if (!isset($args['title']) || empty($args['title'])) {
         $args['title'] = __('CoursePress Report', 'cp');
     }
     $page_orientation = isset($args['orientation']) ? $args['orientation'] : PDF_PAGE_ORIENTATION;
     //Make directory for receipt cache
     if (!is_dir(K_PATH_CACHE)) {
         mkdir(K_PATH_CACHE, 0755, true);
     }
     if (!is_writable(K_PATH_CACHE)) {
         chmod(K_PATH_CACHE, 0755);
     }
     //Clean out old cache files
     foreach (glob(K_PATH_CACHE . '*.pdf') as $fname) {
         $age = time() - filemtime($fname);
         if ($age > 12 * 60 * 60 && basename($fname) != 'index.php') {
             //Don't erase our blocking index.php file
             unlink($fname);
             // more than 12 hours old;
         }
     }
     // create new PDF document
     $pdf = new TCPDF($page_orientation, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
     //$dimension = $this->get_format_in_mm( PDF_PAGE_FORMAT );
     $dimension = $this->get_format_in_px(PDF_PAGE_FORMAT);
     if ('P' == $page_orientation) {
         $temp = $dimension[0];
         $dimension[0] = $dimension[1];
         $dimension[1] = $temp;
     }
     // Note: If uncommenting below, please remove previous call.
     // Can use the following to change language symbols to appropriate standard, e.g. ISO-638-2 languages.
     // $pdf = new TCPDF( $page_orientation, PDF_UNIT, PDF_PAGE_FORMAT, false, 'ISO-639-2', false );
     // set document information
     $pdf->SetCreator(CoursePress::instance()->name);
     $pdf->SetTitle($args['title']);
     $pdf->SetKeywords('');
     // remove default header/footer
     $pdf->setPrintHeader(false);
     $pdf->setPrintFooter(false);
     // set default monospaced font
     $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
     //set margins
     $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
     $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
     //set image scale factor
     $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
     //set some language-dependent strings
     global $l;
     $pdf->setLanguageArray($l);
     // ---------------------------------------------------------
     // set font
     $reports_font = get_option('reports_font', 'helvetica');
     if (isset($args['base_font'])) {
         $pdf->SetFont($args['base_font']['family'], '', $args['base_font']['size']);
     } else {
         if (isset($reports_font)) {
             $pdf->SetFont($reports_font, '', 14);
         } else {
             $pdf->SetFont('helvetica', '', 14);
         }
     }
     // add a page
     $pdf->AddPage();
     if (isset($args['clickable']) && !empty($args['clickable'])) {
         $html = wpautop($html);
     } else {
         $html = make_clickable(wpautop($html));
     }
     if (isset($args['style'])) {
         $html = $args['style'] . $html;
     }
     if (isset($args['image']) && !empty($args['image'])) {
         $pdf->SetMargins(0, 0, 0);
         $pdf->SetAutoPageBreak(false, 0);
         $pdf->Image($args['image'], 0, 0, 0, 0, '', '', '', true, 300, '', false, false, 0, false, false, true);
         $pdf->setPageMark();
     }
     $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
     //set auto page breaks
     $pdf->SetAutoPageBreak(true, PDF_MARGIN_BOTTOM);
     // output the HTML content
     $pdf->writeHTML($html, true, false, true, false, '');
     // ---------------------------------------------------------
     global $blog_id;
     $user_id = get_current_user_id();
     $sitename = sanitize_title(get_site_option('blogname'));
     $uid = isset($args['uid']) ? "{$sitename}-{$blog_id}-{$user_id}" . $args['uid'] : uniqid("{$sitename}-{$blog_id}-{$user_id}");
     $fname = K_PATH_CACHE . "{$uid}.pdf";
     $furl = CoursePress::instance()->plugin_url . 'includes/external/tcpdf/cache/' . $uid . '.pdf';
     if (!isset($args['format']) || empty($args['format'])) {
         $args['format'] = 'F';
     }
     switch ($args['format']) {
         case 'F':
             //Close and output PDF document
             $pdf->Output($fname, 'F');
             if (isset($args['url']) && !empty($args['url'])) {
                 return $furl;
             } else {
                 $attachments[] = $fname;
             }
             return $attachments;
             break;
     }
 }
<?php

global $page, $user_id, $cp_admin_notice, $coursepress, $mp;
add_editor_style(CoursePress::instance()->plugin_url . 'css/editor_style_fix.css');
add_thickbox();
if (isset($_GET['course_id'])) {
    $course = new Course((int) $_GET['course_id']);
    $course_details = $course->get_course();
    $course_id = (int) $_GET['course_id'];
} else {
    $course = new Course();
    $course_id = 0;
}
if (isset($_POST['action']) && ($_POST['action'] == 'add' || $_POST['action'] == 'update')) {
    check_admin_referer('course_details_overview');
    /* if ( $_POST['meta_course_category'] != -1 ) {
    	  $term = get_term_by( 'id', $_POST['meta_course_category'], 'course_category' );
    	  wp_set_object_terms( $course_id, $term->slug, 'course_category', false );
    	  } */
    // Course has a start date, but no end date
    if (!isset($_POST['meta_open_ended_course'])) {
        $_POST['meta_open_ended_course'] = 'off';
    }
    // Users can enroll anytime
    if (!isset($_POST['meta_open_ended_enrollment'])) {
        $_POST['meta_open_ended_enrollment'] = 'off';
    }
    // Limit class size?
    if (!isset($_POST['meta_limit_class_size'])) {
        $_POST['meta_limit_class_size'] = 'off';
    }
    public static function front_main($data)
    {
        $data->name = __CLASS__;
        $preview_data = CoursePress::instance()->preview_data;
        $preview = false;
        if (isset($preview_data) && !empty($preview_data)) {
            $response = array();
            $all_responses = array();
            $preview = true;
        } else {
            $response = text_input_module::get_response(get_current_user_id(), $data->ID);
            $all_responses = text_input_module::get_response(get_current_user_id(), $data->ID, 'private', -1);
        }
        $grade = false;
        if (count($response) == 0) {
            global $coursepress;
            if ($coursepress->is_preview(Unit_Module::get_module_unit_id($data->ID))) {
                $enabled = 'disabled';
            } else {
                $enabled = 'enabled';
            }
        } else {
            $enabled = 'disabled';
            $grade = Unit_Module::get_response_grade($response->ID);
        }
        ?>
		<?php 
        if (isset($data->checked_length) && $data->checked_length == 'single' || !isset($data->checked_length)) {
            ?>
			<div id="module-<?php 
            echo $data->ID;
            ?>
" class="<?php 
            echo $data->name;
            ?>
 front-single-module<?php 
            echo text_input_module::FRONT_SAVE == true ? '-save' : '';
            ?>
">
				<?php 
            if ($data->post_title != '' && parent::display_title_on_front($data)) {
                ?>
					<h2 class="module_title"><?php 
                echo $data->post_title;
                ?>
</h2>
				<?php 
            }
            ?>
				<?php 
            if ($data->post_content != '') {
                ?>
					<div class="module_description"><?php 
                echo apply_filters('element_content_filter', apply_filters('the_content', $data->post_content));
                ?>
</div>
				<?php 
            }
            ?>
				<?php 
            if (is_object($response) && count($response) >= 1 && trim($response->post_content) !== '') {
                ?>
					<div class="front_response_content">
						<?php 
                echo $response->post_content;
                ?>
					</div>
				<?php 
            } else {
                ?>
					<div class="module_textarea_input">
						<input <?php 
                echo $data->mandatory_answer == 'yes' ? 'data-mandatory="yes"' : 'data-mandatory="no"';
                ?>
 type="text" name="<?php 
                echo $data->name . '_front_' . $data->ID;
                ?>
" id="<?php 
                echo $data->name . '_front_' . $data->ID;
                ?>
" placeholder="<?php 
                echo isset($data->placeholder_text) && $data->placeholder_text !== '' ? esc_attr($data->placeholder_text) : ' ';
                ?>
" value="<?php 
                echo is_object($response) && count($response >= 1) ? esc_attr($response->post_content) : '';
                ?>
" <?php 
                echo $enabled;
                ?>
 />
					</div>
				<?php 
            }
            ?>

				<?php 
            parent::grade_status_and_resubmit($data, $grade, $all_responses, $response);
            ?>

			</div>
		<?php 
        } else {
            ?>
			<div id="module-<?php 
            echo $data->ID;
            ?>
" class="<?php 
            echo $data->name;
            ?>
 front-single-module<?php 
            echo text_input_module::FRONT_SAVE == true ? '-save' : '';
            ?>
">
				<?php 
            if ($data->post_title != '' && parent::display_title_on_front($data)) {
                ?>
					<h2 class="module_title"><?php 
                echo $data->post_title;
                ?>
</h2>
				<?php 
            }
            ?>
				<?php 
            if ($data->post_content != '') {
                ?>
					<div class="module_description"><?php 
                echo apply_filters('element_content_filter', $data->post_content);
                ?>
</div>
				<?php 
            }
            ?>
				<div class="module_textarea_input">
					<?php 
            if (count($response) >= 1 && trim($response->post_content) !== '') {
                ?>
						<div class="front_response_content">
							<?php 
                echo $response->post_content;
                ?>
						</div>
					<?php 
            } else {
                ?>
						<textarea <?php 
                echo $data->mandatory_answer == 'yes' ? 'data-mandatory="yes"' : 'data-mandatory="no"';
                ?>
 class="<?php 
                echo $data->name . '_front';
                ?>
" name="<?php 
                echo $data->name . '_front_' . $data->ID;
                ?>
" id="<?php 
                echo $data->name . '_front_' . $data->ID;
                ?>
" placeholder="<?php 
                echo isset($data->placeholder_text) && esc_attr($data->placeholder_text) !== '' ? $data->placeholder_text : ' ';
                ?>
" <?php 
                echo $enabled;
                ?>
></textarea>
					<?php 
            }
            ?>
				</div>

				<?php 
            parent::grade_status_and_resubmit($data, $grade, $all_responses, $response);
            ?>

			</div>
		<?php 
        }
    }
 function generate_certificate($course_id = false, $user_id = false, $preview = false, $force_download = false)
 {
     global $cp, $pdf;
     if (!$user_id) {
         $user_id = get_current_user_id();
     }
     if ($course_id) {
         $course = new Course($course_id);
     }
     require_once $tc->plugin_dir . 'includes/external/tcpdf/examples/tcpdf_include.php';
     $template_id = get_post_meta($course->details->ID, 'certificate_template', true);
     if ($template_id) {
         $metas = get_post_meta($post_id);
         //cp_get_post_meta_all
     }
     $margin_left = $metas['document_template_left_margin'];
     $margin_top = $metas['document_template_top_margin'];
     $margin_right = $metas['document_template_right_margin'];
     // create new PDF document
     // Use CoursePress_PDF which extends TCPDF
     require_once CoursePress::instance()->plugin_dir . 'includes/classes/class.coursepress-pdf.php';
     $pdf = new CoursePress_PDF($metas['document_template_orientation'], PDF_UNIT, apply_filters('coursepress_additional_template_document_size_output', $metas['document_template_size']), true, apply_filters('coursepress_template_document_encoding', bloginfo('charset')), false);
     $pdf->setPrintHeader(false);
     $pdf->setPrintFooter(false);
     $pdf->SetFont($metas['document_font'], '', 14);
     // set margins
     $pdf->SetMargins($margin_left, $margin_top, $margin_right);
     // set auto page breaks
     $pdf->SetAutoPageBreak(false, PDF_MARGIN_BOTTOM);
     $pdf->AddPage();
     error_reporting(0);
     //Don't show errors in the PDF
     ob_clean();
     //Clear any previous output
     ob_start();
     //Start new output buffer
     if (isset($metas['document_template_background_image']) && $metas['document_template_background_image'] !== '') {
         $pdf->Image($metas['document_template_background_image'], 0, 0, '', '', '', '', '', false, 300, '', false, false, 0);
     }
     $col_1 = 'width: 100%;';
     $col_1_width = '100%';
     $col_2 = 'width: 49.2%; margin-right: 1%;';
     $col_2_width = '49.2%';
     $col_3 = 'width: 32.5%; margin-right: 1%;';
     $col_3_width = '32.5%';
     $col_4 = 'width: 24%; margin-right: 1%;';
     $col_5 = 'width: 19%; margin-right: 1%;';
     $col_6 = 'width: 15.66%; margin-right: 1%;';
     $col_7 = 'width: 13.25%; margin-right: 1%;';
     $col_8 = 'width: 11.43%; margin-right: 1%;';
     $col_9 = 'width: 10%; margin-right: 1%;';
     $col_10 = 'width: 8.94%; margin-right: 1%;';
     $rows = '<table>';
     for ($i = 1; $i <= apply_filters('coursepress_template_template_row_number', 10); $i++) {
         $rows .= '<tr>';
         $rows_elements = get_post_meta($post_id, 'rows_' . $i, true);
         if (isset($rows_elements) && $rows_elements !== '') {
             $element_class_names = explode(',', $rows_elements);
             $rows_count = count($element_class_names);
             foreach ($element_class_names as $element_class_name) {
                 if (class_exists($element_class_name)) {
                     if (isset($post_id)) {
                         $rows .= '<td ' . (isset($metas[$element_class_name . '_cell_alignment']) ? 'align="' . $metas[$element_class_name . '_cell_alignment'] . '"' : 'align="left"') . ' style="' . ${"col_" . $rows_count} . (isset($metas[$element_class_name . '_cell_alignment']) ? 'text-align:' . $metas[$element_class_name . '_cell_alignment'] . ';' : '') . (isset($metas[$element_class_name . '_font_size']) ? 'font-size:' . $metas[$element_class_name . '_font_size'] . ';' : '') . (isset($metas[$element_class_name . '_font_color']) ? 'color:' . $metas[$element_class_name . '_font_color'] . ';' : '') . '">';
                         for ($s = 1; $s <= $metas[$element_class_name . '_top_padding']; $s++) {
                             $rows .= '<br />';
                         }
                         $element = new $element_class_name($post_id);
                         $rows .= $element->template_content($course_id, $user_id, $preview);
                         for ($s = 1; $s <= $metas[$element_class_name . '_bottom_padding']; $s++) {
                             $rows .= '<br />';
                         }
                         $rows .= '</td>';
                     }
                 }
             }
         }
         $rows .= '</tr>';
     }
     $rows .= '</table>';
     echo $rows;
     $page = ob_get_contents();
     ob_clean();
     $page = preg_replace("/\\s\\s+/", '', $page);
     //Strip excess whitespace
     $pdf->writeHTML($page, true, 0, true, 0);
     //Write page
     $pdf->lastPage();
     $pdf->Output((isset($course->details->post_name) ? $course->details->post_name : __('Certificate', 'cp')) . '.pdf', $force_download ? 'D' : 'I');
     exit;
 }
 public static function make_pdf($student, $course, $url = false)
 {
     // Use CoursePress_PDF which extends TCPDF
     require_once CoursePress::instance()->plugin_dir . 'includes/classes/class.coursepress-pdf.php';
     // Get the objects from IDs if passed as IDs.
     if (!is_object($course) && 0 != (int) $course) {
         $course = new Course($course);
     }
     if (!is_object($student) && 0 != (int) $student) {
         $student = new Student($student);
     }
     $course_completed_details = self::_get_fields($student, $course);
     $certificate_title = sprintf(__('Certificate %s', 'cp'), $course_completed_details['certificate_number']);
     // Get the styles and replace fields if they exist
     $top = self::option('padding_top');
     $bototm = self::option('padding_bottom');
     $left = self::option('padding_left');
     $right = self::option('padding_right');
     $style = sprintf(".basic_certificate{ padding: %s %s %s %s; }", $top, $right, $bototm, $left);
     // has to be this order for CSS shortcut
     $style .= self::certificate_styles();
     $style = !empty($style) ? '<style>' . $style . '</style>' : $style;
     $html = '<table class="basic_certificate"><tr><td>' . "\n\n" . stripslashes(self::certificate_content()) . "\n\n" . '</td></tr></table>';
     $html = self::_replace_fields($html, $student, $course, true, $course_completed_details);
     // create new PDF document
     $pdf = new CoursePress_PDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
     return $pdf->make_pdf($html, array('title' => $certificate_title, 'style' => $style, 'image' => self::option('background_url'), 'orientation' => self::option('orientation'), 'uid' => $course_completed_details['certificate_number'], 'url' => $url));
 }
        // Course List
        echo '<div class="dashboard-current-courses-list">';
        echo '<h1 class="title enrolled-courses-title current-courses-title">' . __('Your current courses:', 'cp') . '</h1>';
        echo '<div class="course-list course-list-current course course-student-dashboard">';
        echo $course_list;
        echo '</div>';
        echo '</div>';
        echo '<div class="clearfix"></div>';
    }
    // Completed courses
    $show = 'dates,class_size';
    $course_list = do_shortcode('[course_list student="' . $student->ID . '" student_msg="" course_status="completed" list_wrapper_before="" title_link="no" title_tag="h1" title_class="h1-title" show_divider="yes" left_class="enroll-box-left" right_class="enroll-box-right"]');
    if (!empty($course_list)) {
        // Course List
        echo '<div class="dashboard-completed-courses-list">';
        echo '<h1 class="title completed-courses-title">' . __('Completed courses:', 'cp') . '</h1>';
        echo '<div class="course-list course-list-completed course course-student-dashboard">';
        echo $course_list;
        echo '</div>';
        echo '</div>';
        echo '<div class="clearfix"></div>';
    }
    ?>
	</div>  <!-- student-dashboard-wrapper -->
<?php 
} else {
    //ob_start();
    // if( defined('DOING_AJAX') && DOING_AJAX ) { cp_write_log('doing ajax'); }
    wp_redirect(get_option('use_custom_login_form', 1) ? CoursePress::instance()->get_signup_slug(true) : wp_login_url());
    exit;
}
        function course_signup($atts)
        {
            ob_start();
            $allowed = array('signup', 'login');
            extract(shortcode_atts(array('page' => isset($_REQUEST['page']) ? $_REQUEST['page'] : '', 'failed_login_text' => __('Invalid login.', 'cp'), 'failed_login_class' => 'red', 'logout_url' => '', 'signup_tag' => 'h3', 'signup_title' => __('Signup', 'cp'), 'login_tag' => 'h3', 'login_title' => __('Login', 'cp'), 'signup_url' => '', 'login_url' => '', 'redirect_url' => ''), $atts, 'course_signup'));
            $failed_login_text = sanitize_text_field($failed_login_text);
            $failed_login_class = sanitize_html_class($failed_login_class);
            $logout_url = esc_url_raw($logout_url);
            $signup_tag = sanitize_html_class($signup_tag);
            $signup_title = sanitize_text_field($signup_title);
            $login_tag = sanitize_html_class($login_tag);
            $login_title = sanitize_text_field($login_title);
            $signup_url = esc_url_raw($signup_url);
            $redirect_url = esc_url_raw($redirect_url);
            $page = in_array($page, $allowed) ? $page : 'signup';
            $signup_prefix = empty($signup_url) ? '&' : '?';
            $login_prefix = empty($login_url) ? '&' : '?';
            $signup_url = empty($signup_url) ? CoursePress::instance()->get_signup_slug(true) : $signup_url;
            $login_url = empty($login_url) ? CoursePress::instance()->get_login_slug(true) : $login_url;
            if (!empty($redirect_url)) {
                $signup_url = $signup_url . $signup_prefix . 'redirect_url=' . urlencode($redirect_url);
                $login_url = $login_url . $login_prefix . 'redirect_url=' . urlencode($redirect_url);
            }
            if (!empty($_POST['redirect_url'])) {
                $signup_url = CoursePress::instance()->get_signup_slug(true) . '?redirect_url=' . $_POST['redirect_url'];
                $login_url = CoursePress::instance()->get_login_slug(true) . '?redirect_url=' . $_POST['redirect_url'];
            }
            //Set a cookie now to see if they are supported by the browser.
            setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN);
            if (SITECOOKIEPATH != COOKIEPATH) {
                setcookie(TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN);
            }
            //Set a redirect for the logout form
            if (!empty($logout_url)) {
                update_option('cp_custom_login_url', $logout_url);
            }
            $form_message = '';
            $form_message_class = '';
            // Attempt a login if submitted
            if (isset($_POST['log']) && isset($_POST['pwd'])) {
                $auth = wp_authenticate_username_password(null, $_POST['log'], $_POST['pwd']);
                if (!is_wp_error($auth)) {
                    // if( defined('DOING_AJAX') && DOING_AJAX ) { cp_write_log('doing ajax'); }
                    $user = get_user_by('login', $_POST['log']);
                    $user_id = $user->ID;
                    wp_set_current_user($user_id);
                    wp_set_auth_cookie($user_id);
                    if (!empty($redirect_url)) {
                        wp_redirect(urldecode($redirect_url));
                    } else {
                        wp_redirect(CoursePress::instance()->get_student_dashboard_slug(true));
                    }
                    exit;
                } else {
                    $form_message = $failed_login_text;
                    $form_message_class = $failed_login_class;
                }
            }
            switch ($page) {
                case 'signup':
                    if (!is_user_logged_in()) {
                        if (cp_user_can_register()) {
                            ?>

							<?php 
                            $form_message_class = '';
                            $form_message = '';
                            $student = new Student(0);
                            if (isset($_POST['student-settings-submit'])) {
                                check_admin_referer('student_signup');
                                $min_password_length = apply_filters('coursepress_min_password_length', 6);
                                $student_data = array();
                                $form_errors = 0;
                                do_action('coursepress_before_signup_validation');
                                if ($_POST['username'] != '' && $_POST['first_name'] != '' && $_POST['last_name'] != '' && $_POST['email'] != '' && $_POST['password'] != '' && $_POST['password_confirmation'] != '') {
                                    if (!username_exists($_POST['username'])) {
                                        if (!email_exists($_POST['email'])) {
                                            if ($_POST['password'] == $_POST['password_confirmation']) {
                                                if (!preg_match("#[0-9]+#", $_POST['password']) || !preg_match("#[a-zA-Z]+#", $_POST['password']) || strlen($_POST['password']) < $min_password_length) {
                                                    $form_message = sprintf(__('Your password must be at least %d characters long and have at least one letter and one number in it.', 'cp'), $min_password_length);
                                                    $form_message_class = 'red';
                                                    $form_errors++;
                                                } else {
                                                    if ($_POST['password_confirmation']) {
                                                        $student_data['user_pass'] = $_POST['password'];
                                                    } else {
                                                        $form_message = __("Passwords don't match", 'cp');
                                                        $form_message_class = 'red';
                                                        $form_errors++;
                                                    }
                                                }
                                            } else {
                                                $form_message = __('Passwords don\'t match', 'cp');
                                                $form_message_class = 'red';
                                                $form_errors++;
                                            }
                                            $student_data['role'] = 'student';
                                            $student_data['user_login'] = $_POST['username'];
                                            $student_data['user_email'] = $_POST['email'];
                                            $student_data['first_name'] = $_POST['first_name'];
                                            $student_data['last_name'] = $_POST['last_name'];
                                            if (!is_email($_POST['email'])) {
                                                $form_message = __('E-mail address is not valid.', 'cp');
                                                $form_message_class = 'red';
                                                $form_errors++;
                                            }
                                            if (isset($_POST['tos_agree'])) {
                                                if ($_POST['tos_agree'] == '0') {
                                                    $form_message = __('You must agree to the Terms of Service in order to signup.', 'cp');
                                                    $form_message_class = 'red';
                                                    $form_errors++;
                                                }
                                            }
                                            if ($form_errors == 0) {
                                                if ($student_id = $student->add_student($student_data) !== 0) {
                                                    //$form_message = __( 'Account created successfully! You may now <a href="' . ( get_option( 'use_custom_login_form', 1 ) ? trailingslashit( site_url() . '/' . $this->get_login_slug() ) : wp_login_url() ) . '">log into your account</a>.', 'cp' );
                                                    //$form_message_class = 'regular';
                                                    $email_args['email_type'] = 'student_registration';
                                                    $email_args['student_id'] = $student_id;
                                                    $email_args['student_email'] = $student_data['user_email'];
                                                    $email_args['student_first_name'] = $student_data['first_name'];
                                                    $email_args['student_last_name'] = $student_data['last_name'];
                                                    $email_args['student_username'] = $student_data['user_login'];
                                                    $email_args['student_password'] = $student_data['user_pass'];
                                                    coursepress_send_email($email_args);
                                                    $creds = array();
                                                    $creds['user_login'] = $student_data['user_login'];
                                                    $creds['user_password'] = $student_data['user_pass'];
                                                    $creds['remember'] = true;
                                                    $user = wp_signon($creds, false);
                                                    if (is_wp_error($user)) {
                                                        $form_message = $user->get_error_message();
                                                        $form_message_class = 'red';
                                                    }
                                                    // if( defined('DOING_AJAX') && DOING_AJAX ) { cp_write_log('doing ajax'); }
                                                    if (isset($_POST['course_id']) && is_numeric($_POST['course_id'])) {
                                                        $course = new Course($_POST['course_id']);
                                                        wp_redirect($course->get_permalink());
                                                    } else {
                                                        if (!empty($redirect_url)) {
                                                            wp_redirect(apply_filters('coursepress_redirect_after_signup_redirect_url', $redirect_url));
                                                        } else {
                                                            wp_redirect(apply_filters('coursepress_redirect_after_signup_url', CoursePress::instance()->get_student_dashboard_slug(true)));
                                                        }
                                                    }
                                                    exit;
                                                } else {
                                                    $form_message = __('An error occurred while creating the account. Please check the form and try again.', 'cp');
                                                    $form_message_class = 'red';
                                                }
                                            }
                                        } else {
                                            $form_message = __('Sorry, that email address is already used!', 'cp');
                                            $form_message_class = 'error';
                                        }
                                    } else {
                                        $form_message = __('Username already exists. Please choose another one.', 'cp');
                                        $form_message_class = 'red';
                                    }
                                } else {
                                    $form_message = __('All fields are required.', 'cp');
                                    $form_message_class = 'red';
                                }
                            } else {
                                $form_message = __('All fields are required.', 'cp');
                            }
                            ?>
							<?php 
                            //ob_start();
                            if (!empty($signup_title)) {
                                echo '<' . $signup_tag . '>' . $signup_title . '</' . $signup_tag . '>';
                            }
                            ?>

							<p class="form-info-<?php 
                            echo apply_filters('signup_form_message_class', sanitize_text_field($form_message_class));
                            ?>
"><?php 
                            echo apply_filters('signup_form_message', sanitize_text_field($form_message));
                            ?>
</p>

							<?php 
                            do_action('coursepress_before_signup_form');
                            ?>

							<form id="student-settings" name="student-settings" method="post" class="student-settings">

								<?php 
                            do_action('coursepress_before_all_signup_fields');
                            ?>

								<input type="hidden" name="course_id" value="<?php 
                            esc_attr_e(isset($_GET['course_id']) ? $_GET['course_id'] : ' ');
                            ?>
"/>
								<input type="hidden" name="redirect_url" value="<?php 
                            echo $redirect_url;
                            ?>
"/>

								<label>
									<?php 
                            _e('First Name', 'cp');
                            ?>
:
									<input type="text" name="first_name" value="<?php 
                            echo isset($_POST['first_name']) ? $_POST['first_name'] : '';
                            ?>
"/>
								</label>

								<?php 
                            do_action('coursepress_after_signup_first_name');
                            ?>

								<label>
									<?php 
                            _e('Last Name', 'cp');
                            ?>
:
									<input type="text" name="last_name" value="<?php 
                            echo isset($_POST['last_name']) ? $_POST['last_name'] : '';
                            ?>
"/>
								</label>

								<?php 
                            do_action('coursepress_after_signup_last_name');
                            ?>

								<label>
									<?php 
                            _e('Username', 'cp');
                            ?>
:
									<input type="text" name="username" value="<?php 
                            echo isset($_POST['username']) ? $_POST['username'] : '';
                            ?>
"/>
								</label>

								<?php 
                            do_action('coursepress_after_signup_username');
                            ?>

								<label>
									<?php 
                            _e('E-mail', 'cp');
                            ?>
:
									<input type="text" name="email" value="<?php 
                            echo isset($_POST['email']) ? $_POST['email'] : '';
                            ?>
"/>
								</label>

								<?php 
                            do_action('coursepress_after_signup_email');
                            ?>

								<label>
									<?php 
                            _e('Password', 'cp');
                            ?>
:
									<input type="password" name="password" value=""/>
								</label>

								<?php 
                            do_action('coursepress_after_signup_password');
                            ?>

								<label class="right">
									<?php 
                            _e('Confirm Password', 'cp');
                            ?>
:
									<input type="password" name="password_confirmation" value=""/>
								</label>
								<br clear="both"/><br/>

								<?php 
                            if (shortcode_exists('signup-tos')) {
                                if (get_option('show_tos', 0) == '1') {
                                    ?>
										<label class="full"><?php 
                                    echo do_shortcode('[signup-tos]');
                                    ?>
</label>
									<?php 
                                }
                            }
                            ?>

								<?php 
                            do_action('coursepress_after_all_signup_fields');
                            ?>

								<label class="full">
									<?php 
                            printf(__('Already have an account? %s%s%s!', 'cp'), '<a href="' . $login_url . '">', __('Login to your account', 'cp'), '</a>');
                            ?>
								</label>

								<label class="full-right">
									<input type="submit" name="student-settings-submit" class="apply-button-enrolled" value="<?php 
                            _e('Create an Account', 'cp');
                            ?>
"/>
								</label>

								<?php 
                            do_action('coursepress_after_submit');
                            ?>

								<?php 
                            wp_nonce_field('student_signup');
                            ?>
							</form>
							<div class="clearfix" style="clear: both;"></div>

							<?php 
                            do_action('coursepress_after_signup_form');
                            ?>
							<?php 
                            //$content = ob_get_clean();
                            // Return the html in the buffer.
                            //return $content;
                        } else {
                            _e('Registrations are not allowed.', 'cp');
                        }
                    } else {
                        if (!empty($redirect_url)) {
                            wp_redirect(urldecode($redirect_url));
                        } else {
                            wp_redirect(CoursePress::instance()->get_student_dashboard_slug(true));
                        }
                        exit;
                    }
                    break;
                case 'login':
                    ?>
					<?php 
                    if (!empty($login_title)) {
                        echo '<' . $login_tag . '>' . $login_title . '</' . $login_tag . '>';
                    }
                    ?>
					<p class="form-info-<?php 
                    echo apply_filters('signup_form_message_class', sanitize_text_field($form_message_class));
                    ?>
"><?php 
                    echo apply_filters('signup_form_message', sanitize_text_field($form_message));
                    ?>
</p>
					<?php 
                    do_action('coursepress_before_login_form');
                    ?>
					<form name="loginform" id="student-settings" class="student-settings" method="post">
						<?php 
                    do_action('coursepress_after_start_form_fields');
                    ?>

						<label>
							<?php 
                    _e('Username', 'cp');
                    ?>
:
							<input type="text" name="log" value="<?php 
                    echo isset($_POST['log']) ? $_POST['log'] : '';
                    ?>
"/>
						</label>

						<label>
							<?php 
                    _e('Password', 'cp');
                    ?>
:
							<input type="password" name="pwd" value="<?php 
                    echo isset($_POST['pwd']) ? $_POST['pwd'] : '';
                    ?>
"/>
						</label>

						<?php 
                    do_action('coursepress_form_fields');
                    ?>

						<label class="full">
							<?php 
                    if (cp_user_can_register()) {
                        printf(__('Don\'t have an account? %s%s%s now!', 'cp'), '<a href="' . $signup_url . '">', __('Create an Account', 'cp'), '</a>');
                    }
                    ?>
						</label>

						<label class="half-left">
							<a href="<?php 
                    echo wp_lostpassword_url();
                    ?>
"><?php 
                    _e('Forgot Password?', 'cp');
                    ?>
</a>
						</label>
						<label class="half-right">
							<input type="submit" name="wp-submit" id="wp-submit" class="apply-button-enrolled" value="<?php 
                    _e('Log In', 'cp');
                    ?>
"><br>
						</label>
						<br clear="all"/>

						<input name="redirect_to" value="<?php 
                    echo CoursePress::instance()->get_student_dashboard_slug(true);
                    ?>
" type="hidden">
						<input name="testcookie" value="1" type="hidden">
						<input name="course_signup_login" value="1" type="hidden">
						<?php 
                    do_action('coursepress_before_end_form_fields');
                    ?>
					</form>

					<?php 
                    do_action('coursepress_after_login_form');
                    ?>
					<?php 
                    break;
            }
            $content = ob_get_clean();
            // Return the html in the buffer.
            return $content;
        }
    ?>
'/>&nbsp;/
							</td>
						</tr>

						<tr valign="top">
							<th scope="row"><?php 
    _e('New Message Slug', 'cp');
    ?>
</th>
							<td>
								<?php 
    echo esc_html(trailingslashit(home_url()));
    ?>
								&nbsp;<input type='text' name='option_coursepress_new_message_slug' id='coursepress_new_message_slug' value='<?php 
    echo esc_attr(CoursePress::instance()->get_new_message_slug());
    ?>
'/>&nbsp;/
							</td>
						</tr>
					<?php 
}
?>
					<!--<tr valign="top">
							<th scope="row"><?php 
_e('Instructor Profile Page', 'cp');
?>
</th>
							<td>
						<?php 
$option_name = 'coursepress_instructor_profile_page';
        public function nav_html()
        {
            global $_nav_menu_placeholder, $nav_menu_selected_id;
            $_nav_menu_placeholder = 0 > $_nav_menu_placeholder ? $_nav_menu_placeholder - 1 : -1;
            $current_tab = 'cp-published';
            $post_type_name = 'course';
            $removed_args = array('action', 'customlink-tab', 'edit-menu-item', 'page-tab', '_wpnonce');
            ?>
			<div id="posttype-<?php 
            echo $post_type_name;
            ?>
" class="posttypediv">

				<ul id="posttype-<?php 
            echo $post_type_name;
            ?>
-tabs" class="posttype-tabs add-menu-item-tabs">
					<li <?php 
            echo 'cp-published' == $current_tab ? ' class="tabs"' : '';
            ?>
>
						<a class="nav-tab-link" data-type="tabs-panel-posttype-<?php 
            echo esc_attr($post_type_name);
            ?>
-cp-published" href="<?php 
            if ($nav_menu_selected_id) {
                echo esc_url(add_query_arg($post_type_name . '-tab', 'cp-published', remove_query_arg($removed_args)));
            }
            ?>
#tabs-panel-posttype-<?php 
            echo $post_type_name;
            ?>
-cp-published">
							<?php 
            _e('Courses', 'cp');
            ?>
						</a>
					</li>
					<li <?php 
            echo 'cp-special-pages' == $current_tab ? ' class="tabs"' : '';
            ?>
>
						<a class="nav-tab-link" data-type="tabs-panel-posttype-<?php 
            echo esc_attr($post_type_name);
            ?>
-cp-special-pages" href="<?php 
            if ($nav_menu_selected_id) {
                echo esc_url(add_query_arg($post_type_name . '-tab', 'cp-special-pages', remove_query_arg($removed_args)));
            }
            ?>
#tabs-panel-posttype-<?php 
            echo $post_type_name;
            ?>
-cp-special-pages">
							<?php 
            _e('Pages', 'cp');
            ?>
						</a>
					</li>
				</ul>
				<!-- .posttype-tabs -->

				<div id="tabs-panel-posttype-<?php 
            echo $post_type_name;
            ?>
-cp-published" class="tabs-panel <?php 
            echo 'cp-published' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive';
            ?>
">
					<ul id="<?php 
            echo $post_type_name;
            ?>
checklist-cp-published" class="categorychecklist form-no-clear">
						<?php 
            $args = array('order' => 'ASC', 'post_type' => 'course', 'post_mime_type' => '', 'post_parent' => '', 'post_status' => 'publish', 'posts_per_page' => -1);
            $courses = get_posts($args);
            foreach ($courses as $course) {
                $_nav_menu_placeholder = $_nav_menu_placeholder - 1;
                ?>
							<li>
								<label class="menu-item-title">
									<input type="checkbox" class="menu-item-checkbox" name="menu-item[<?php 
                echo $_nav_menu_placeholder;
                ?>
][menu-item-object-id]" value="<?php 
                echo $_nav_menu_placeholder;
                ?>
"> <?php 
                echo $course->post_title;
                ?>
								</label>
								<input type="hidden" class="menu-item-type" name="menu-item[<?php 
                echo $_nav_menu_placeholder;
                ?>
][menu-item-type]" value="custom">
								<input type="hidden" class="menu-item-title" name="menu-item[<?php 
                echo $_nav_menu_placeholder;
                ?>
][menu-item-title]" value="<?php 
                echo $course->post_title;
                ?>
">
								<input type="hidden" class="menu-item-url" name="menu-item[<?php 
                echo $_nav_menu_placeholder;
                ?>
][menu-item-url]" value="<?php 
                echo get_permalink($course->ID);
                ?>
">
								<input type="hidden" class="menu-item-classes" name="menu-item[<?php 
                echo $_nav_menu_placeholder;
                ?>
][menu-item-classes]" value="coursepress-menu-item coursepress-menu-item-course">
							</li>
						<?php 
            }
            ?>
					</ul>
				</div>
				<!-- /.tabs-panel -->

				<div id="tabs-panel-posttype-<?php 
            echo $post_type_name;
            ?>
-cp-special-pages" class="tabs-panel <?php 
            echo 'cp-special-pages' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive';
            ?>
">
					<ul id="<?php 
            echo $post_type_name;
            ?>
checklist-cp-special-pages" class="categorychecklist form-no-clear">
						<?php 
            $_nav_menu_placeholder = 0 > $_nav_menu_placeholder ? $_nav_menu_placeholder - 1 : -1;
            ?>
						<?php 
            $_nav_menu_placeholder = $_nav_menu_placeholder - 1;
            ?>
						<li>
							<label class="menu-item-title">
								<input type="checkbox" class="menu-item-checkbox" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-object-id]" value="<?php 
            echo $_nav_menu_placeholder;
            ?>
"> <?php 
            echo __('Course List', 'cp');
            ?>
							</label>
							<input type="hidden" class="menu-item-type" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-type]" value="custom">
							<input type="hidden" class="menu-item-title" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-title]" value="<?php 
            echo __('Courses', 'cp');
            ?>
">
							<input type="hidden" class="menu-item-url" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-url]" value="<?php 
            echo CoursePress::instance()->get_course_slug(true);
            ?>
">
							<input type="hidden" class="menu-item-classes" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-classes]" value="coursepress-menu-item coursepress-menu-item-courses">
						</li>
						<?php 
            $_nav_menu_placeholder = $_nav_menu_placeholder - 1;
            ?>
						<li>
							<label class="menu-item-title">
								<input type="checkbox" class="menu-item-checkbox" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-object-id]" value="<?php 
            echo $_nav_menu_placeholder;
            ?>
"> <?php 
            echo __('My Courses', 'cp');
            ?>
							</label>
							<input type="hidden" class="menu-item-type" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-type]" value="custom">
							<input type="hidden" class="menu-item-title" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-title]" value="<?php 
            echo __('My Courses', 'cp');
            ?>
">
							<input type="hidden" class="menu-item-url" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-url]" value="<?php 
            echo CoursePress::instance()->get_student_dashboard_slug(true);
            ?>
">
							<input type="hidden" class="menu-item-classes" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-classes]" value="coursepress-menu-item coursepress-menu-item-dashboard">
						</li>
						<?php 
            $_nav_menu_placeholder = $_nav_menu_placeholder - 1;
            ?>
						<li>
							<label class="menu-item-title">
								<input type="checkbox" class="menu-item-checkbox" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-object-id]" value="<?php 
            echo $_nav_menu_placeholder;
            ?>
"> <?php 
            echo __('My Profile', 'cp');
            ?>
							</label>
							<input type="hidden" class="menu-item-type" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-type]" value="custom">
							<input type="hidden" class="menu-item-title" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-title]" value="<?php 
            echo __('My Profile', 'cp');
            ?>
">
							<input type="hidden" class="menu-item-url" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-url]" value="<?php 
            echo CoursePress::instance()->get_student_settings_slug(true);
            ?>
">
							<input type="hidden" class="menu-item-classes" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-classes]" value="coursepress-menu-item coursepress-menu-item-dashboard">
						</li>
						<?php 
            $_nav_menu_placeholder = $_nav_menu_placeholder - 1;
            ?>
						<li>
							<label class="menu-item-title">
								<input type="checkbox" class="menu-item-checkbox" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-object-id]" value="<?php 
            echo $_nav_menu_placeholder;
            ?>
"> <?php 
            echo __('CoursePress Login', 'cp');
            ?>
							</label>
							<input type="hidden" class="menu-item-type" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-type]" value="custom">
							<input type="hidden" class="menu-item-title" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-title]" value="<?php 
            echo __('Login', 'cp');
            ?>
">
							<input type="hidden" class="menu-item-url" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-url]" value="<?php 
            echo CoursePress::instance()->get_login_slug(true);
            ?>
">
							<input type="hidden" class="menu-item-classes" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-classes]" value="coursepress-menu-item coursepress-menu-item-login">
						</li>
						<?php 
            $_nav_menu_placeholder = $_nav_menu_placeholder - 1;
            ?>
						<li>
							<label class="menu-item-title">
								<input type="checkbox" class="menu-item-checkbox" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-object-id]" value="<?php 
            echo $_nav_menu_placeholder;
            ?>
"> <?php 
            echo __('CoursePress Signup', 'cp');
            ?>
							</label>
							<input type="hidden" class="menu-item-type" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-type]" value="custom">
							<input type="hidden" class="menu-item-title" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-title]" value="<?php 
            echo __('Signup', 'cp');
            ?>
">
							<input type="hidden" class="menu-item-url" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-url]" value="<?php 
            echo CoursePress::instance()->get_signup_slug(true);
            ?>
">
							<input type="hidden" class="menu-item-classes" name="menu-item[<?php 
            echo $_nav_menu_placeholder;
            ?>
][menu-item-classes]" value="coursepress-menu-item coursepress-menu-item-signup">
						</li>

					</ul>
				</div>
				<!-- /.tabs-panel -->

				<p class="button-controls">
					<span class="list-controls">
						<a href="<?php 
            echo esc_url(add_query_arg(array($post_type_name . '-tab' => 'cp-published', 'selectall' => 1), remove_query_arg($removed_args)));
            ?>
#posttype-<?php 
            echo $post_type_name;
            ?>
" class="select-all"><?php 
            _e('Select All', 'cp');
            ?>
</a>
					</span>
					<span class="add-to-menu">
						<input type="submit"<?php 
            wp_nav_menu_disabled_check($nav_menu_selected_id);
            ?>
 class="button-secondary submit-add-to-menu right" value="<?php 
            esc_attr_e('Add to Menu', 'cp');
            ?>
" name="add-course-menu-item" id="<?php 
            echo esc_attr('submit-posttype-' . $post_type_name);
            ?>
"/>
						<span class="spinner"></span>
					</span>
				</p>
			</div>
		<?php 
        }
 public static function instance($instance = null)
 {
     if (!$instance || 'CoursePress' != get_class($instance)) {
         if (is_null(self::$instance)) {
             self::$instance = new CoursePress();
         }
     } else {
         if (is_null(self::$instance)) {
             self::$instance = $instance;
         }
     }
     return self::$instance;
 }
<?php

$redirect_url = '';
if (!empty($_REQUEST['redirect_url'])) {
    $redirect_url = $_REQUEST['redirect_url'];
}
echo do_shortcode('[course_signup page="login" login_title="" redirect_url="' . $redirect_url . '" signup_url="' . CoursePress::instance()->get_signup_slug(true) . '" logout_url="' . CoursePress::instance()->get_signup_slug(true) . '"]');
function coursepress_send_email($email_args = array())
{
    if ($email_args['email_type'] == 'student_registration') {
        global $course_slug;
        $email_address = $email_args['student_email'];
        $subject = coursepress_get_registration_email_subject();
        $courses_address = trailingslashit(home_url()) . trailingslashit($course_slug);
        $tags = array('STUDENT_FIRST_NAME', 'STUDENT_LAST_NAME', 'STUDENT_USERNAME', 'STUDENT_PASSWORD', 'BLOG_NAME', 'LOGIN_ADDRESS', 'COURSES_ADDRESS', 'WEBSITE_ADDRESS');
        $tags_replaces = array($email_args['student_first_name'], $email_args['student_last_name'], $email_args['student_username'], $email_args['student_password'], get_bloginfo(), cp_student_login_address(), $courses_address, home_url());
        $message = coursepress_get_registration_content_email();
        $message = str_replace($tags, $tags_replaces, $message);
        add_filter('wp_mail_from', 'my_registration_from_function');
        if (!function_exists('my_registration_from_function')) {
            function my_registration_from_function($email)
            {
                return coursepress_get_registration_from_email();
            }
        }
        add_filter('wp_mail_from_name', 'my_registration_from_name_function');
        if (!function_exists('my_registration_from_name_function')) {
            function my_registration_from_name_function($name)
            {
                return coursepress_get_registration_from_name();
            }
        }
    }
    if ($email_args['email_type'] == 'enrollment_confirmation') {
        global $course_slug;
        $email_address = $email_args['student_email'];
        $dashboard_address = $email_args['dashboard_address'];
        $subject = coursepress_get_enrollment_email_subject();
        $courses_address = trailingslashit(home_url()) . trailingslashit($course_slug);
        $course = new Course($email_args['course_id']);
        $tags = array('STUDENT_FIRST_NAME', 'STUDENT_LAST_NAME', 'BLOG_NAME', 'LOGIN_ADDRESS', 'COURSES_ADDRESS', 'WEBSITE_ADDRESS', 'COURSE_ADDRESS', 'COURSE_TITLE', 'STUDENT_DASHBOARD');
        $tags_replaces = array($email_args['student_first_name'], $email_args['student_last_name'], get_bloginfo(), cp_student_login_address(), $courses_address, home_url(), $course->get_permalink(), $course->details->post_title, $email_args['dashboard_address']);
        $message = coursepress_get_enrollment_content_email();
        $message = str_replace($tags, $tags_replaces, $message);
        add_filter('wp_mail_from', 'my_enrollment_from_function');
        if (!function_exists('my_enrollment_from_function')) {
            function my_enrollment_from_function($email)
            {
                return coursepress_get_enrollment_from_email();
            }
        }
        add_filter('wp_mail_from_name', 'my_enrollment_from_name_function');
        if (!function_exists('my_enrollment_from_name_function')) {
            function my_enrollment_from_name_function($name)
            {
                return coursepress_get_enrollment_from_name();
            }
        }
    }
    if ($email_args['email_type'] == 'student_invitation') {
        global $course_slug;
        $email_address = $email_args['student_email'];
        if (isset($email_args['course_id'])) {
            $course = new Course($email_args['course_id']);
        }
        $tags = array('STUDENT_FIRST_NAME', 'STUDENT_LAST_NAME', 'COURSE_NAME', 'COURSE_EXCERPT', 'COURSE_ADDRESS', 'WEBSITE_ADDRESS', 'PASSCODE');
        $tags_replaces = array($email_args['student_first_name'], $email_args['student_last_name'], $course->details->post_title, $course->details->post_excerpt, $course->get_permalink(), home_url(), $course->details->passcode);
        if ($email_args['enroll_type'] == 'passcode') {
            $message = coursepress_get_invitation_content_passcode_email();
            $subject = coursepress_get_invitation_passcode_email_subject();
        } else {
            $message = coursepress_get_invitation_content_email();
            $subject = coursepress_get_invitation_email_subject();
        }
        $message = str_replace($tags, $tags_replaces, $message);
        add_filter('wp_mail_from', 'my_passcode_from_function');
        if (!function_exists('my_passcode_from_function')) {
            function my_passcode_from_function($email)
            {
                return coursepress_get_invitation_passcode_from_email();
            }
        }
        add_filter('wp_mail_from_name', 'my_passcode_from_name_function');
        if (!function_exists('my_passcode_from_name_function')) {
            function my_passcode_from_name_function($name)
            {
                return coursepress_get_invitation_passcode_from_name();
            }
        }
    }
    if ('instructor_invitation' == $email_args['email_type']) {
        global $course_slug;
        $course = '';
        $course_summary = '';
        $course_name = '';
        $courses_address = trailingslashit(home_url()) . trailingslashit($course_slug);
        $bugfix = false;
        if (isset($email_args['course_id'])) {
            $course = new Course($email_args['course_id']);
            $course_name = $course->details->post_title;
            $course_summary = $course->details->post_excerpt;
            // For unpublished courses.
            $permalink = '';
            if (in_array($course->details->post_status, array('draft', 'pending', 'auto-draft'))) {
                $permalink = CoursePress::instance()->get_course_slug(true) . '/' . $course->details->post_name . '/';
            } else {
                $permalink = get_permalink($email_args['course_id']);
            }
            $course_address = $permalink;
        }
        $confirm_link = $course_address . '?action=course_invite&course_id=' . $email_args['course_id'] . '&c=' . $email_args['invite_code'] . '&h=' . $email_args['invite_hash'];
        $email_address = $email_args['instructor_email'];
        $subject = cp_get_instructor_invitation_email_subject();
        $tags = array('INSTRUCTOR_FIRST_NAME', 'INSTRUCTOR_LAST_NAME', 'INSTRUCTOR_EMAIL', 'CONFIRMATION_LINK', 'COURSE_NAME', 'COURSE_EXCERPT', 'COURSE_ADDRESS', 'WEBSITE_ADDRESS', 'WEBSITE_NAME');
        $tags_replaces = array($email_args['first_name'], $email_args['last_name'], $email_address, $confirm_link, $course_name, $course_summary, $course_address, home_url(), get_bloginfo());
        $message = cp_get_instructor_invitation_email();
        $message = str_replace($tags, $tags_replaces, $message);
        add_filter('wp_mail_from', 'my_instructor_invitation_from_function');
        if (!function_exists('my_instructor_invitation_from_function')) {
            function my_instructor_invitation_from_function($email)
            {
                return coursepress_get_instructor_invitation_from_email();
            }
        }
        add_filter('wp_mail_from_name', 'my_instructor_invitation_from_name_function');
        if (!function_exists('my_instructor_invitation_from_name_function')) {
            function my_instructor_invitation_from_name_function($name)
            {
                return coursepress_get_instructor_invitation_from_name();
            }
        }
    }
    add_filter('wp_mail_content_type', 'cp_email_set_content_type');
    if (!function_exists('cp_email_set_content_type')) {
        function cp_email_set_content_type($content_type)
        {
            return 'text/html';
        }
    }
    add_filter('wp_mail_charset', 'cp_set_charset');
    if (!function_exists('cp_set_charset')) {
        function cp_set_charset($charset)
        {
            return get_option('blog_charset');
        }
    }
    return wp_mail($email_address, stripslashes($subject), stripslashes(nl2br($message)));
}