table = acadlix()->helper()->acadlix_table_prefix('course_statistics'); } public function setMetaValueAttribute($value) { $this->attributes['meta_value'] = maybe_serialize($value); // phpcs:ignore } public function getMetaValueAttribute($value) { return maybe_unserialize($value); } public function content() { return $this->belongsTo(acadlix()->model()->courseSectionContent(), 'course_section_content_id', 'ID'); } public function order_item() { return $this->belongsTo(acadlix()->model()->orderItem(), 'order_item_id', 'id'); } public function course() { return $this->belongsTo(acadlix()->model()->course(), 'course_id', 'ID')->ofCourse(); } public function user() { return $this->belongsTo(acadlix()->model()->wpUsers(), 'user_id', 'ID'); } public function user_activity_meta() { return $this->hasMany(acadlix()->model()->userActivityMeta(), 'type_id', 'id') ->where('type', 'course_statistic'); } public function getUserStatsOverview($course_id, $user_id) { return DB::table($this->table) ->where('course_id', $course_id) ->where('user_id', $user_id) ->selectRaw(" user_id, SUM( CASE WHEN meta_type = 'lesson' AND is_completed = 1 THEN 1 ELSE 0 END ) as completed_lessons, SUM( CASE WHEN meta_type = 'quiz' AND is_completed = 1 THEN 1 ELSE 0 END ) as completed_quizzes ") ->groupBy('user_id') ->first(); } public function delete(){ $user_activity_meta = $this->user_activity_meta()->get(); foreach ($user_activity_meta as $meta) { if($meta->meta_key === "statistic_ref_id"){ acadlix()->model()->statisticRef()->where('id', $meta->meta_value)->delete(); } $meta->delete(); } return parent::delete(); } } }