PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / fluentcommunity / actions / list-course-sections.php
suretriggers / src / Integrations / fluentcommunity / actions Last commit date
add-user-to-course.php 1 year ago add-user-to-space.php 1 year ago create-lesson-in-course.php 9 months ago create-new-post-feed.php 1 year ago fetch-members.php 6 months ago get-all-courses-list.php 1 year ago get-all-spaces-list.php 1 year ago like-post.php 6 months ago list-course-sections.php 9 months ago list-posts-in-space.php 6 months ago remove-user-from-course.php 1 year ago remove-user-from-space.php 1 year ago reply-to-post.php 7 months ago
list-course-sections.php
184 lines
1 <?php
2 /**
3 * ListCourseSections.
4 * php version 5.6
5 *
6 * @category ListCourseSections
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers\Integrations\FluentCommunity\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Traits\SingletonLoader;
19 use FluentCommunity\Modules\Course\Model\Course;
20 use FluentCommunity\Modules\Course\Model\CourseTopic;
21
22 /**
23 * ListCourseSections
24 *
25 * @category ListCourseSections
26 * @package SureTriggers
27 * @author BSF <username@example.com>
28 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
29 * @link https://www.brainstormforce.com/
30 * @since 1.0.0
31 */
32 class ListCourseSections extends AutomateAction {
33
34 /**
35 * Integration type.
36 *
37 * @var string
38 */
39 public $integration = 'FluentCommunity';
40
41 /**
42 * Action name.
43 *
44 * @var string
45 */
46 public $action = 'fc_list_course_sections';
47
48 use SingletonLoader;
49
50 /**
51 * Register a action.
52 *
53 * @param array $actions actions.
54 * @return array
55 */
56 public function register( $actions ) {
57 $actions[ $this->integration ][ $this->action ] = [
58 'label' => __( 'List Course Sections', 'suretriggers' ),
59 'action' => $this->action,
60 'function' => [ $this, 'action_listener' ],
61 ];
62
63 return $actions;
64 }
65
66 /**
67 * Action listener.
68 *
69 * @param int $user_id User ID.
70 * @param int $automation_id Automation ID.
71 * @param array $fields Fields.
72 * @param array $selected_options Selected options.
73 *
74 * @return array|void
75 */
76 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
77 $course_id = isset( $selected_options['course_id'] ) ? (int) sanitize_text_field( $selected_options['course_id'] ) : 0;
78 $include_lessons = isset( $selected_options['include_lessons'] ) ? sanitize_text_field( $selected_options['include_lessons'] ) : 'yes';
79 $only_published = isset( $selected_options['only_published'] ) ? sanitize_text_field( $selected_options['only_published'] ) : 'no';
80
81 // Validate required fields.
82 if ( empty( $course_id ) ) {
83 return [
84 'status' => 'error',
85 'message' => 'Course ID is required.',
86 ];
87 }
88
89 // Check if required classes exist.
90 if ( ! class_exists( 'FluentCommunity\Modules\Course\Model\Course' ) ) {
91 return [
92 'status' => 'error',
93 'message' => 'Course class not found.',
94 ];
95 }
96
97 if ( ! class_exists( 'FluentCommunity\Modules\Course\Model\CourseTopic' ) ) {
98 return [
99 'status' => 'error',
100 'message' => 'CourseTopic class not found.',
101 ];
102 }
103
104 try {
105 // Validate that the course exists.
106 $course = Course::findOrFail( $course_id );
107
108 // Build the sections query.
109 $sections_query = CourseTopic::where( 'space_id', $course_id )
110 ->orderBy( 'priority', 'ASC' );
111
112 // Filter by published status if requested.
113 if ( 'yes' === $only_published ) {
114 $sections_query->where( 'status', 'published' );
115
116 if ( 'yes' === $include_lessons ) {
117 $sections_query->with(
118 [
119 'lessons' => function ( $q ) {
120 $q->where( 'status', 'published' );
121 },
122 ]
123 );
124 }
125 } elseif ( 'yes' === $include_lessons ) {
126 $sections_query->with( [ 'lessons' ] );
127 }
128
129 // Get the sections.
130 $sections = $sections_query->get();
131
132 // Format the response.
133 $formatted_sections = [];
134 foreach ( $sections as $section ) {
135 $section_data = [
136 'id' => $section->id,
137 'title' => $section->title,
138 'slug' => $section->slug,
139 'status' => $section->status,
140 'priority' => $section->priority,
141 'created_at' => $section->created_at,
142 'updated_at' => $section->updated_at,
143 ];
144
145 // Include lessons if requested.
146 if ( 'yes' === $include_lessons && isset( $section->lessons ) ) {
147 $section_data['lessons'] = [];
148 foreach ( $section->lessons as $lesson ) {
149 $section_data['lessons'][] = [
150 'id' => $lesson->id,
151 'title' => $lesson->title,
152 'slug' => $lesson->slug,
153 'status' => $lesson->status,
154 'content_type' => $lesson->content_type,
155 'created_at' => $lesson->created_at,
156 'updated_at' => $lesson->updated_at,
157 ];
158 }
159 $section_data['lessons_count'] = count( $section_data['lessons'] );
160 }
161
162 $formatted_sections[] = $section_data;
163 }
164
165 return [
166 'status' => 'success',
167 'message' => 'Course sections retrieved successfully',
168 'course_id' => $course_id,
169 'course_title' => $course->title,
170 'sections' => $formatted_sections,
171 'sections_count' => count( $formatted_sections ),
172 ];
173
174 } catch ( Exception $e ) {
175 return [
176 'status' => 'error',
177 'message' => 'An error occurred while retrieving course sections: ' . $e->getMessage(),
178 ];
179 }
180 }
181 }
182
183 ListCourseSections::get_instance();
184