Skip to content

Commit fc51a1f

Browse files
donnapepclaude
andcommitted
fix: resolve Psalm type errors in learner management
- Split course/lesson repo branches to avoid union type on save() - Guard $post_id against false before passing to repo get() - Cast wp_date() return to string to satisfy esc_attr() type Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent dbf1ade commit fc51a1f

2 files changed

Lines changed: 24 additions & 16 deletions

File tree

includes/admin/class-sensei-learner-management.php

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -521,23 +521,28 @@ public function edit_date_started() {
521521
exit( '' );
522522
}
523523

524+
$utc_date = $date->setTimezone( new \DateTimeZone( 'UTC' ) );
525+
524526
if ( 'course' === $post_type ) {
525527
$repository = Sensei()->course_progress_repository_factory->create();
526528
$progress = $repository->get( $post_id, $user_id );
529+
if ( ! $progress ) {
530+
exit( '' );
531+
}
532+
$old_started_at = $progress->get_started_at();
533+
$progress->set_started_at( $utc_date );
534+
$repository->save( $progress );
527535
} else {
528536
$repository = Sensei()->lesson_progress_repository_factory->create();
529537
$progress = $repository->get( $post_id, $user_id );
538+
if ( ! $progress ) {
539+
exit( '' );
540+
}
541+
$old_started_at = $progress->get_started_at();
542+
$progress->set_started_at( $utc_date );
543+
$repository->save( $progress );
530544
}
531545

532-
if ( ! $progress ) {
533-
exit( '' );
534-
}
535-
536-
$utc_date = $date->setTimezone( new \DateTimeZone( 'UTC' ) );
537-
$old_started_at = $progress->get_started_at();
538-
$progress->set_started_at( $utc_date );
539-
$repository->save( $progress );
540-
541546
$updated = ( null === $old_started_at || $old_started_at->getTimestamp() !== $utc_date->getTimestamp() );
542547
$formatted_date = $date->format( 'Y-m-d H:i:s' );
543548

includes/admin/class-sensei-learners-main.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -536,15 +536,18 @@ protected function get_row_data( $item ) {
536536
$actions[] = $edit_start_date_form;
537537
}
538538

539-
if ( 'course' === $post_type ) {
540-
$progress_repository = Sensei()->course_progress_repository_factory->create();
541-
$learner_progress = $progress_repository->get( $post_id, $user_activity->user_id );
542-
} else {
543-
$progress_repository = Sensei()->lesson_progress_repository_factory->create();
544-
$learner_progress = $progress_repository->get( $post_id, $user_activity->user_id );
539+
$learner_progress = null;
540+
if ( $post_id ) {
541+
if ( 'course' === $post_type ) {
542+
$progress_repository = Sensei()->course_progress_repository_factory->create();
543+
$learner_progress = $progress_repository->get( (int) $post_id, $user_activity->user_id );
544+
} else {
545+
$progress_repository = Sensei()->lesson_progress_repository_factory->create();
546+
$learner_progress = $progress_repository->get( (int) $post_id, $user_activity->user_id );
547+
}
545548
}
546549
$learner_started_at = $learner_progress ? $learner_progress->get_started_at() : null;
547-
$date_started = $learner_started_at ? wp_date( 'Y-m-d H:i:s', $learner_started_at->getTimestamp(), wp_timezone() ) : '';
550+
$date_started = $learner_started_at ? (string) wp_date( 'Y-m-d H:i:s', $learner_started_at->getTimestamp(), wp_timezone() ) : '';
548551
$date_input = '<input class="edit-date-date-picker" data-name="start-date" type="text" value="' . esc_attr( $date_started ) . '">';
549552

550553
/**

0 commit comments

Comments
 (0)