1: <?php
2:
3: declare(strict_types=1);
4:
5: namespace Atk4\Ui\Table\Column\FilterModel;
6:
7: use Atk4\Data\Model;
8: use Atk4\Ui\Table\Column;
9:
10: class TypeString extends Column\FilterModel
11: {
12: #[\Override]
13: protected function init(): void
14: {
15: parent::init();
16:
17: $this->op->values = [
18: 'is' => 'Is',
19: 'is not' => 'Is Not',
20: 'contains' => 'Contains',
21: 'start' => 'Start with',
22: 'end' => 'End with',
23: ];
24: $this->op->default = 'is';
25: }
26:
27: #[\Override]
28: public function setConditionForModel(Model $model)
29: {
30: $filter = $this->recallData();
31: if ($filter !== null) {
32: switch ($filter['op']) {
33: case 'is':
34: $model->addCondition($filter['name'], $filter['value']);
35:
36: break;
37: case 'is not':
38: $model->addCondition($filter['name'], '!=', $filter['value']);
39:
40: break;
41: case 'contains':
42: $model->addCondition($filter['name'], 'like', '%' . $filter['value'] . '%');
43:
44: break;
45: case 'start':
46: $model->addCondition($filter['name'], 'like', $filter['value'] . '%');
47:
48: break;
49: case 'end':
50: $model->addCondition($filter['name'], 'like', '%' . $filter['value']);
51:
52: break;
53: }
54: }
55:
56: return $model;
57: }
58: }
59: