Issues (55)

src/Task/DefaultSlideTypeTask.php (1 issue)

Severity
1
<?php
2
3
namespace Dynamic\Flexslider\Task;
4
5
use Dynamic\FlexSlider\Model\SlideImage;
6
use SilverStripe\Dev\BuildTask;
7
use SilverStripe\ORM\DB;
8
9
/**
10
 * Class DefaultSlideTypeTask
11
 * @package Dynamic\Flexslider\Task
12
 */
13
class DefaultSlideTypeTask extends BuildTask
14
{
15
    /**
16
     * @var string
17
     */
18
    private static $segment = 'default-slide-type-task';
0 ignored issues
show
The private property $segment is not used, and could be removed.
Loading history...
19
20
    /**
21
     * @var string
22
     */
23
    protected $title = 'Flexslider - Default Slide Type Task';
24
25
    /**
26
     * @param \SilverStripe\Control\HTTPRequest $request
27
     */
28
    public function run($request)
29
    {
30
        $this->setDefaults();
31
    }
32
33
    /**
34
     *
35
     */
36
    protected function setDefaults()
37
    {
38
        $default = SlideImage::singleton()->config()->get('defaults');
39
40
        if (isset($default['SlideType'])) {
41
            $baseTable = SlideImage::singleton()->baseTable();
42
43
            $tables = [
44
                $baseTable,
45
                "{$baseTable}_Versions",
46
                "{$baseTable}_Live",
47
            ];
48
49
            foreach ($tables as $table) {
50
                $query = DB::query("SELECT * FROM \"{$table}\" WHERE \"SlideType\" IS NULL");
51
52
                foreach ($this->yieldSingle($query) as $record) {
53
                    DB::prepared_query(
54
                        "UPDATE \"{$table}\" SET \"SlideType\" = ? WHERE \"ID\" = ?",
55
                        [$default['SlideType'], $record['ID']]
56
                    );
57
                }
58
            }
59
        }
60
    }
61
62
    /**
63
     * @param $list
64
     * @return \Generator
65
     */
66
    protected function yieldSingle($list)
67
    {
68
        foreach ($list as $item) {
69
            yield $item;
70
        }
71
    }
72
}
73