53 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php namespace Clockwork\Request;
 | |
| 
 | |
| // Data structure representing custom user data
 | |
| class UserData
 | |
| {
 | |
| 	// Data items
 | |
| 	protected $data = [];
 | |
| 
 | |
| 	// Data title
 | |
| 	protected $title;
 | |
| 
 | |
| 	// Add generic user data
 | |
| 	public function data(array $data, $key = null)
 | |
| 	{
 | |
| 		if ($key !== null) {
 | |
| 			return $this->data[$key] = new UserDataItem($data);
 | |
| 		}
 | |
| 
 | |
| 		return $this->data[] = new UserDataItem($data);
 | |
| 	}
 | |
| 
 | |
| 	// Add user data shown as counters
 | |
| 	public function counters(array $data)
 | |
| 	{
 | |
| 		return $this->data($data)
 | |
| 			->showAs('counters');
 | |
| 	}
 | |
| 
 | |
| 	// Add user data shown as table
 | |
| 	public function table($title, array $data)
 | |
| 	{
 | |
| 		return $this->data($data)
 | |
| 			->showAs('table')
 | |
| 			->title($title);
 | |
| 	}
 | |
| 
 | |
| 	// Set data title
 | |
| 	public function title($title)
 | |
| 	{
 | |
| 		$this->title = $title;
 | |
| 		return $this;
 | |
| 	}
 | |
| 
 | |
| 	// Transform data and all contents to a serializable array with metadata
 | |
| 	public function toArray()
 | |
| 	{
 | |
| 		return array_merge(
 | |
| 			array_map(function ($data) { return $data->toArray(); }, $this->data),
 | |
| 			[ '__meta' => array_filter([ 'title' => $this->title ]) ]
 | |
| 		);
 | |
| 	}
 | |
| }
 | 
