]> BookStack Code Mirror - bookstack/blob - app/Sorting/SortSet.php
971b3e29aae243dddfe675da74cbe3c7f0addcc4
[bookstack] / app / Sorting / SortSet.php
1 <?php
2
3 namespace BookStack\Sorting;
4
5 use BookStack\Activity\Models\Loggable;
6 use Carbon\Carbon;
7 use Illuminate\Database\Eloquent\Model;
8
9 /**
10  * @property int $id
11  * @property string $name
12  * @property string $sequence
13  * @property Carbon $created_at
14  * @property Carbon $updated_at
15  */
16 class SortSet extends Model implements Loggable
17 {
18     /**
19      * @return SortSetOperation[]
20      */
21     public function getOperations(): array
22     {
23         return SortSetOperation::fromSequence($this->sequence);
24     }
25
26     /**
27      * @param SortSetOperation[] $options
28      */
29     public function setOperations(array $options): void
30     {
31         $values = array_map(fn (SortSetOperation $opt) => $opt->value, $options);
32         $this->sequence = implode(',', $values);
33     }
34
35     public function logDescriptor(): string
36     {
37         return "({$this->id}) {$this->name}";
38     }
39
40     public function getUrl(): string
41     {
42         return url("/settings/sorting/sets/{$this->id}");
43     }
44 }