AdminSlides.php
3.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
namespace Nextend\SmartSlider3\Slider\Admin;
use Nextend\Framework\Platform\Platform;
use Nextend\Framework\Request\Request;
use Nextend\SmartSlider3\Application\Model\ModelSlides;
use Nextend\SmartSlider3\Slider\Slide;
use Nextend\SmartSlider3\Slider\Slides;
class AdminSlides extends Slides {
/**
* @var Slide
*/
protected $editedSlide;
protected function slidesWhereQuery() {
$date = Platform::getMysqlDate();
return " AND ((published = 1 AND (publish_up = '1970-01-01 00:00:00' OR publish_up < '{$date}')
AND (publish_down = '1970-01-01 00:00:00' OR publish_down > '{$date}'))
OR id = " . Request::$REQUEST->getInt('slideid') . ") ";
}
protected function createSlide($slideRow) {
return new AdminSlide($this->slider, $slideRow);
}
protected function makeSlides($slidesData, $extendGenerator = array()) {
$slides = &$this->slides;
$editedSlideID = $this->slider->getEditedSlideID();
$this->legacyFixOnlyStaticOverlays($slides);
$staticSlides = array();
for ($j = count($slides) - 1; $j >= 0; $j--) {
$slide = $slides[$j];
if ($slide->isStatic()) {
if ($slide->id == $editedSlideID) {
$this->editedSlide = $slide;
}
$staticSlides[] = $slide;
$this->slider->addStaticSlide($slide);
array_splice($slides, $j, 1);
}
}
for ($i = 0; $i < count($slides); $i++) {
$slides[$i]->initGenerator($extendGenerator);
}
for ($i = count($slides) - 1; $i >= 0; $i--) {
if ($slides[$i]->hasGenerator()) {
array_splice($slides, $i, 1, $slides[$i]->expandSlideAdmin());
}
}
if (!$this->editedSlide) {
for ($i = 0; $i < count($slides); $i++) {
if ($slides[$i]->id == $editedSlideID) {
$this->editedSlide = $slides[$i];
$this->slider->setActiveSlide($this->editedSlide);
break;
}
}
}
// If we edit a static slide -> remove other static slides from the canvas.
if ($this->editedSlide->isStatic()) {
for ($i = 0; $i < count($this->slider->staticSlides); $i++) {
if ($this->slider->staticSlides[$i]->id != $editedSlideID) {
array_splice($this->slider->staticSlides, $i, 1);
$i--;
}
}
if (empty($slides)) {
/**
* When the currently edited slide is static and there is not other slide, we create a temporary empty slide
*/
$slidesModel = new ModelSlides($this->slider);
$slides[] = $this->createSlide($slidesModel->convertSlideDataToDatabaseRow(array(
'id' => 0,
'title' => 'Slide #' . 1,
'layers' => '[]',
'description' => '',
'thumbnail' => '',
'published' => 1,
'publish_up' => '0000-00-00 00:00:00',
'publish_down' => '0000-00-00 00:00:00',
'backgroundImage' => ''
)));
}
$this->slider->setActiveSlide($slides[0]);
} else {
if ($this->maximumSlideCount > 0) {
array_splice($slides, $this->maximumSlideCount);
if (!in_array($this->editedSlide, $slides)) {
$slides[] = $this->editedSlide;
}
}
}
$this->editedSlide->setCurrentlyEdited();
for ($i = 0; $i < count($slides); $i++) {
$slides[$i]->setPublicID($i + 1);
}
}
/**
* @return Slide
*/
public function getEditedSlide() {
return $this->editedSlide;
}
}