Issues (55)

src/Task/SlideThumbnailNavMigrationTask.php (1 issue)

Severity
1
<?php
2
3
namespace Dynamic\flexslider\Task;
4
5
use Dynamic\FlexSlider\ORM\FlexSlider;
6
use SilverStripe\CMS\Model\SiteTree;
7
use SilverStripe\Control\Director;
8
use SilverStripe\Core\ClassInfo;
9
use SilverStripe\Dev\BuildTask;
10
use SilverStripe\ORM\DataObject;
11
use SilverStripe\Versioned\Versioned;
12
13
/**
14
 * Class SlideThumbnailNavMigrationTask
15
 * @package Dynamic\FlexSlider\Tasks
16
 */
17
class SlideThumbnailNavMigrationTask extends BuildTask
18
{
19
    /**
20
     * @var string
21
     */
22
    protected $title = 'FlexSlider - Default Values';
23
24
    /**
25
     * @var string
26
     */
27
    protected $description = 'Set default values for slider after the thumbnail nav update';
28
29
    /**
30
     * @var string
31
     */
32
    private static $segment = 'slide-thumbnail-nav-migration-task';
0 ignored issues
show
The private property $segment is not used, and could be removed.
Loading history...
33
34
    /**
35
     * @var bool
36
     */
37
    protected $enabled = true;
38
39
    /**
40
     * @param $request
41
     */
42
    public function run($request)
43
    {
44
        $this->defaultSliderSettings();
45
    }
46
47
    /**
48
     * @param $class
49
     * @return \Generator
50
     */
51
    protected function getObjectSet($class)
52
    {
53
        foreach ($class::get() as $object) {
54
            yield $object;
55
        }
56
    }
57
58
    /**
59
     *
60
     */
61
    public function defaultSliderSettings()
62
    {
63
        $ct = 0;
64
65
        $objects = ClassInfo::subclassesFor(DataObject::class);
66
67
        if ($objects) {
68
            unset($objects[DataObject::class]);
69
            foreach ($objects as $object) {
70
                if ($object::singleton()->hasExtension(FlexSlider::class)) {
71
                    foreach ($this->getObjectSet($object) as $result) {
72
                        $result->Loop = 1;
73
                        $result->Animate = 1;
74
                        $result->SliderControlNav = 0;
75
                        $result->SliderDirectionNav = 1;
76
                        $result->CarouselControlNav = 0;
77
                        $result->CarouselDirectionNav = 1;
78
                        $result->CarouselThumbnailCt = 6;
79
                        if ($result instanceof SiteTree || $object::singleton()->hasExtension(Versioned::class)) {
80
                            $result->writeToStage('Stage');
81
                            if ($result->isPublished()) {
82
                                $result->publishRecursive();
83
                            }
84
                        } else {
85
                            $result->write();
86
                        }
87
                        $ct++;
88
                    }
89
                }
90
            }
91
        }
92
        static::write_message($ct . " Sliders updated");
93
    }
94
95
    /**
96
     * @param $message
97
     */
98
    protected static function write_message($message)
99
    {
100
        if (Director::is_cli()) {
101
            echo "{$message}\n";
102
        } else {
103
            echo "{$message}<br><br>";
104
        }
105
    }
106
}
107