Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 86
0.00% covered (danger)
0.00%
0 / 10
CRAP
0.00% covered (danger)
0.00%
0 / 1
StoreLoop
0.00% covered (danger)
0.00%
0 / 86
0.00% covered (danger)
0.00%
0 / 10
506
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getCurrentSignLoop
0.00% covered (danger)
0.00%
0 / 24
0.00% covered (danger)
0.00%
0 / 1
12
 getCurrentSignLoopForSign
0.00% covered (danger)
0.00%
0 / 25
0.00% covered (danger)
0.00%
0 / 1
20
 fetchLoopFromDataBase
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 setLoopArray
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getLoopArray
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 deleteSlideFromLoop
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
6
 updateSlidePositions
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
20
 getFileName
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
12
 getThumbName
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace BuyerKiosk\DigitalSign;
4use BuyerKiosk\StoreController;
5use Store;
6
7class StoreLoop
8{
9
10    private $loopArray = array();
11    private $db;
12    private $store;
13
14
15    public function __construct(\Store $store)
16    {
17        $this->store = $store;
18        $this->db = dbConnectByName($store->getDbName());
19    }
20
21    public function getCurrentSignLoop()
22    {
23        $loopArray = $this->fetchLoopFromDataBase();
24        $tempArray = array();
25        foreach($loopArray as $loopItem) {
26            $Slide = new Slide($this->store);
27            $Slide->id = $loopItem['id'];
28            $Slide->slideID = $loopItem['slideID'];
29            if($loopItem['slideName'] == null) {
30                $Slide->slideName = $loopItem['fileName'];
31            } else {
32                $Slide->slideName = $loopItem['slideName'];
33            }
34            $Slide->fileName = $loopItem['fileName'];
35            $Slide->thumbName = $this->getThumbName($Slide->fileName);
36            $Slide->type = $loopItem['type'];
37            $Slide->duration = $loopItem['duration'];
38            $Slide->position = $loopItem['position'];
39            $Slide->slideUploader = $loopItem['slideUploader'];
40            $Slide->embed = $loopItem['embed'];
41            $Slide->enableWaitTime = $this->store->getEnableWaitTime();
42            $Slide->videoDuration = $loopItem['videoDuration'];
43            $Slide->scheduled = $loopItem['scheduled'];
44            $Slide->startDate = $loopItem['startDate'];
45            $Slide->expireDate = $loopItem['expireDate'];
46            $tempArray[] = $Slide;
47        }
48        $this->loopArray = $tempArray;
49        return $this->loopArray;
50    }
51    public function getCurrentSignLoopForSign()
52    {
53        $loopArray = $this->fetchLoopFromDataBase();
54        $tempArray = array();
55        foreach($loopArray as $loopItem) {
56            if($loopItem['scheduled'] == 0) {
57                $Slide = new Slide($this->store);
58                $Slide->id = $loopItem['id'];
59                $Slide->slideID = $loopItem['slideID'];
60                if ($loopItem['slideName'] == null) {
61                    $Slide->slideName = $loopItem['fileName'];
62                } else {
63                    $Slide->slideName = $loopItem['slideName'];
64                }
65                $Slide->fileName = $loopItem['fileName'];
66                $Slide->thumbName = $this->getThumbName($Slide->fileName);
67                $Slide->type = $loopItem['type'];
68                $Slide->duration = $loopItem['duration'];
69                $Slide->position = $loopItem['position'];
70                $Slide->slideUploader = $loopItem['slideUploader'];
71                $Slide->embed = $loopItem['embed'];
72                $Slide->enableWaitTime = $this->store->getEnableWaitTime();
73                $Slide->videoDuration = $loopItem['videoDuration'];
74                $Slide->scheduled = $loopItem['scheduled'];
75                $Slide->startDate = $loopItem['startDate'];
76                $Slide->expireDate = $loopItem['expireDate'];
77                $tempArray[] = $Slide;
78            }
79        }
80        $this->loopArray = $tempArray;
81        return $this->loopArray;
82    }
83    private function fetchLoopFromDataBase() {
84        $loopQuery = $this->db->query("SELECT
85                                            dsLoop.id,
86                                            dsLoop.position,
87                                            dsLoop.duration,
88                                            dsLoop.slideUploader,
89                                            dsLoop.slideID,
90                                            dsLoop.scheduled,
91                                            dsLoop.startDate,
92                                            dsLoop.expireDate,
93                                            IF(slideUploader = 0, dsSlides.fileName, IF(slideUploader = 1, `kiosk_buykiosk`.corpSlides.fileName, `kiosk_buykiosk`.hbSlides.fileName)) as fileName,
94                                            IF(slideUploader = 0, dsSlides.slideName, IF(slideUploader = 1, `kiosk_buykiosk`.corpSlides.slideName, `kiosk_buykiosk`.hbSlides.slideName)) as slideName,
95                                            IF(slideUploader = 0, dsSlides.type, IF(slideUploader = 1, `kiosk_buykiosk`.corpSlides.type, `kiosk_buykiosk`.hbSlides.type)) as type,
96                                            IF(slideUploader = 0, dsSlides.dateAdded, IF(slideUploader = 1, `kiosk_buykiosk`.corpSlides.dateAdded, `kiosk_buykiosk`.hbSlides.dateAdded)) as dateAdded,
97                                                                                        IF(slideUploader = 0, dsSlides.videoDuration,`kiosk_buykiosk`.corpSlides.videoDuration ) as videoDuration,
98                                            IF(slideUploader = 0, dsSlides.embed, null) as embed
99                                        FROM
100                                            dsLoop
101                                            LEFT JOIN `kiosk_buykiosk`.hbSlides ON ( `kiosk_buykiosk`.hbSlides.id = dsLoop.slideID AND dsLoop.slideUploader = 2 )
102                                            LEFT JOIN `kiosk_buykiosk`.corpSlides ON (  `kiosk_buykiosk`.corpSlides.id = dsLoop.slideID AND dsLoop.slideUploader = 1 )
103                                            LEFT JOIN dsSlides ON (  dsSlides.id = dsLoop.slideID AND dsLoop.slideUploader = 0 ) ORDER BY position ASC");
104
105        return $loopQuery->fetchAll(\PDO::FETCH_ASSOC);
106    }
107
108
109    public function setLoopArray($loopArray)
110    {
111        $this->loopArray = $loopArray;
112    }
113
114    public function getLoopArray()
115    {
116        return $this->loopArray;
117    }
118
119    public function deleteSlideFromLoop($slideID) {
120        $deleteQuery = $this->db->prepare("DELETE FROM dsLoop WHERE id = ?");
121        $deleteQuery->execute(array($slideID));
122        if(!$deleteQuery) {
123            error_log("Error deleting slide from loop");
124            return false;
125        } else {
126            return $this->updateSlidePositions();
127        }
128    }
129    public function updateSlidePositions() {
130        try {
131            $selectQuery = $this->db->query("SELECT * FROM dsLoop ORDER BY position ASC");
132            $i=0;
133            while($row = $selectQuery->fetch(\PDO::FETCH_ASSOC)) {
134                $updateQuery = $this->db->query("UPDATE dsLoop SET position = ".$i." WHERE id = ".$row['id']);
135                $i++;
136                if(!$updateQuery) {
137                    error_log("Error updating slide position");
138                    return false;
139                }
140            }
141        } catch(\PDOException $e) {
142            error_log($e->getMessage());
143            return false;
144        }
145        return true;
146    }
147
148    public function getFileName($type, $fileName) {
149        $type = (int)$type;
150        if($type == 1) {
151            return $fileName;
152        } else if($type == 0) {
153            $fileName = $fileName . ".jpg";
154            return $fileName;
155        }
156        return $fileName;
157    }
158    public function getThumbName($fileName) {
159        //take in $fileName and check the last 3 characters and see if it is mp4. if it is mp4 add .jpg to the end and return it
160        $lastThree = substr($fileName, -3);
161        if($lastThree == "mp4") {
162            $fileName = $fileName . ".jpg";
163            return $fileName;
164        } else {
165            return $fileName;
166        }
167    }
168}