progress.php
5.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
<?php
/**
* LearnDash LD30 Displays course progress
*
* @since 3.0.0
*
* @package LearnDash\Templates\LD30
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Fires before the progress bar
*
* @since 3.0.0
*/
$context = ( isset( $context ) ? $context : 'learndash' );
/**
* Fires before the progress bar.
*
* @since 3.0.0
*
* @param int $course_id Course ID.
* @param int $user_id User ID.
*/
do_action( 'learndash-progress-bar-before', $course_id, $user_id );
/**
* Fires before the progress bar for any context.
*
* The dynamic portion of the hook name, `$context`, refers to the context for which the hook is fired,
* such as `course`, `lesson`, `topic`, `quiz`, etc.
*
* @since 3.0.0
*
* @param int $course_id Course ID.
* @param int $user_id User ID.
*/
do_action( 'learndash-' . $context . '-progress-bar-before', $course_id, $user_id );
/**
* In the topic context we're measuring progress through a lesson, not the course itself
*/
if ( 'topic' !== $context ) {
/**
* Filters LearnDash progress arguments.
* This filter will not be called if the context is `topic`.
*
* @since 3.0.0
*
* @param array $progress_args An array of progress arguments.
* @param int $course_id Course ID.
* @param int $user_id User ID.
*/
$progress_args = apply_filters(
'learndash_progress_args',
array(
'array' => true,
'course_id' => $course_id,
'user_id' => $user_id,
),
$course_id,
$user_id,
$context
);
/**
* Filters the progress statistics.
*
* The dynamic portion of the hook name, `$context`, refers to the context of progress,
* such as `course`, `lesson`, `topic`, `quiz`, etc.
*
* @since 3.0.0
*
* @param string $progress_markup The HTML template of users course/lesson progress
*/
$progress = apply_filters( 'learndash-' . $context . '-progress-stats', learndash_course_progress( $progress_args ) );
} else {
//global $post;
/** This filter is documented in themes/ld30/templates/modules/progress.php */
$progress = apply_filters( 'learndash-' . $context . '-progress-stats', learndash_lesson_progress( $post, $course_id ) );
}
if ( $progress ) :
/**
* This is just here for reference
*/ ?>
<div class="ld-progress
<?php
if ( 'course' === $context ) :
?>
ld-progress-inline<?php endif; ?>">
<?php if ( 'focus' === $context ) : ?>
<div class="ld-progress-wrap">
<?php endif; ?>
<div class="ld-progress-heading">
<?php if ( 'topic' === $context ) : ?>
<div class="ld-progress-label">
<?php
echo sprintf(
// translators: placeholder: Lesson Progress.
esc_html_x( '%s Progress', 'Placeholder: Lesson Progress', 'learndash' ),
LearnDash_Custom_Label::get_label( 'lesson' ) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Method escapes output
);
?>
</div>
<?php endif; ?>
<div class="ld-progress-stats">
<div class="ld-progress-percentage ld-secondary-color">
<?php
echo sprintf(
// translators: placeholder: Progress percentage.
esc_html_x( '%s%% Complete', 'placeholder: Progress percentage', 'learndash' ),
esc_html( $progress['percentage'] )
);
?>
</div>
<div class="ld-progress-steps">
<?php
if ( 'course' === $context || 'focus' === $context ) :
$course_args = array(
'course_id' => $course_id,
'user_id' => $user_id,
'post_id' => $course_id,
'activity_type' => 'course',
);
$course_activity = learndash_get_user_activity( $course_args );
if ( ! empty( $course_activity->activity_updated ) && 'course' === $context ) :
echo sprintf(
// translators: Last activity date in infobar.
esc_html_x( 'Last activity on %s', 'Last activity date in infobar', 'learndash' ),
esc_html( learndash_adjust_date_time_display( $course_activity->activity_updated ) )
);
else :
echo sprintf(
// translators: placeholders: completed steps, total steps.
esc_html_x( '%1$d/%2$d Steps', 'placeholders: completed steps, total steps', 'learndash' ),
esc_html( $progress['completed'] ),
esc_html( $progress['total'] )
);
endif;
endif;
?>
</div>
</div> <!--/.ld-progress-stats-->
</div>
<div class="ld-progress-bar">
<div class="ld-progress-bar-percentage ld-secondary-background" style="<?php echo esc_attr( 'width:' . $progress['percentage'] . '%' ); ?>"></div>
</div>
<?php if ( 'focus' === $context ) : ?>
</div> <!--/.ld-progress-wrap-->
<?php endif; ?>
</div> <!--/.ld-progress-->
<?php
endif;
/**
* Fires before the course content progress bar.
*
* @since 3.0.0
*
* @param int $course_id Course ID.
* @param int $user_id User ID.
*/
do_action( 'learndash-progress-bar-after', $course_id, $user_id );
/**
* Fires before the course steps for any context.
*
* The dynamic portion of the hook name, `$context`, refers to the context for which the hook is fired,
* such as `course`, `lesson`, `topic`, `quiz`, etc.
*
* @since 3.0.0
*
* @param int $course_id Course ID.
* @param int $user_id User ID.
*/
do_action( 'learndash-' . $context . '-progress-bar-after', $course_id, $user_id );