ListSettingsTrait.php 810 Bytes
<?php

namespace AC\ListScreenFactory;

use AC\ListScreen;
use DateTime;

trait ListSettingsTrait {

	private function add_settings( ListScreen $list_screen, array $settings ): ListScreen {
		$columns = $settings['columns'] ?? [];
		$preferences = $settings['preferences'] ?? [];
		$group = $settings['group'] ?? '';
		$date = $settings['date'] ?? new DateTime();

		if ( is_string( $date ) ) {
			$date = DateTime::createFromFormat( 'Y-m-d H:i:s', $date );
		}

		$list_screen->set_title( $settings['title'] ?? '' );
		$list_screen->set_layout_id( $settings['list_id'] ?? '' );
		$list_screen->set_preferences( $preferences ?: [] );
		$list_screen->set_settings( $columns ?: [] );
		$list_screen->set_updated( $date );

		if ( $group ) {
			$list_screen->set_group( $group );
		}

		return $list_screen;
	}

}