/wp-content/plugins/revslider/inc_php/revslider_slide.class.php

https://bitbucket.org/zumwalt/eat-with-us · PHP · 438 lines · 217 code · 105 blank · 116 comment · 18 complexity · e53557d525cebd5271c19517846eaac5 MD5 · raw file

  1. <?php
  2. class RevSlide extends UniteElementsBaseRev{
  3. private $id;
  4. private $sliderID;
  5. private $slideOrder;
  6. private $imageUrl;
  7. private $imageFilepath;
  8. private $imageFilename;
  9. private $params;
  10. private $arrLayers;
  11. public function __construct(){
  12. parent::__construct();
  13. }
  14. /**
  15. *
  16. * init slide by db record
  17. */
  18. public function initByData($record){
  19. $this->id = $record["id"];
  20. $this->sliderID = $record["slider_id"];
  21. $this->slideOrder = $record["slide_order"];
  22. $params = $record["params"];
  23. $params = (array)json_decode($params);
  24. $layers = $record["layers"];
  25. $layers = (array)json_decode($layers);
  26. $layers = UniteFunctionsRev::convertStdClassToArray($layers);
  27. //set image path, file and url
  28. $this->imageUrl = UniteFunctionsRev::getVal($params, "image");
  29. UniteFunctionsRev::validateNotEmpty($this->imageUrl,"Image");
  30. $this->imageFilepath = UniteFunctionsWPRev::getImagePathFromURL($this->imageUrl);
  31. $realPath = UniteFunctionsWPRev::getPathContent().$this->imageFilepath;
  32. if(file_exists($realPath) == false || is_file($realPath) == false)
  33. $this->imageFilepath = "";
  34. $this->imageFilename = basename($this->imageUrl);
  35. $this->params = $params;
  36. $this->arrLayers = $layers;
  37. }
  38. /**
  39. *
  40. * init the slider by id
  41. */
  42. public function initByID($slideid){
  43. UniteFunctionsRev::validateNumeric($slideid,"Slide ID");
  44. $slideid = $this->db->escape($slideid);
  45. $record = $this->db->fetchSingle(GlobalsRevSlider::$table_slides,"id=$slideid");
  46. $this->initByData($record);
  47. }
  48. /**
  49. *
  50. * get slide ID
  51. */
  52. public function getID(){
  53. return($this->id);
  54. }
  55. /**
  56. *
  57. * get slide order
  58. */
  59. public function getOrder(){
  60. $this->validateInited();
  61. return($this->slideOrder);
  62. }
  63. /**
  64. *
  65. * get layers in json format
  66. */
  67. public function getLayers(){
  68. $this->validateInited();
  69. return($this->arrLayers);
  70. }
  71. /**
  72. *
  73. * modify layer links for export
  74. */
  75. public function getLayersForExport(){
  76. $this->validateInited();
  77. $arrLayersNew = array();
  78. foreach($this->arrLayers as $key=>$layer){
  79. $imageUrl = UniteFunctionsRev::getVal($layer, "image_url");
  80. if(!empty($imageUrl))
  81. $layer["image_url"] = UniteFunctionsWPRev::getImagePathFromURL($layer["image_url"]);
  82. $arrLayersNew[] = $layer;
  83. }
  84. return($arrLayersNew);
  85. }
  86. /**
  87. *
  88. * get params for export
  89. */
  90. public function getParamsForExport(){
  91. $arrParams = $this->getParams();
  92. $urlImage = UniteFunctionsRev::getVal($arrParams, "image");
  93. if(!empty($urlImage))
  94. $arrParams["image"] = UniteFunctionsWPRev::getImagePathFromURL($urlImage);
  95. return($arrParams);
  96. }
  97. /**
  98. * normalize layers text, and get layers
  99. *
  100. */
  101. public function getLayersNormalizeText(){
  102. $arrLayersNew = array();
  103. foreach ($this->arrLayers as $key=>$layer){
  104. $text = $layer["text"];
  105. $text = addslashes($text);
  106. $layer["text"] = $text;
  107. $arrLayersNew[] = $layer;
  108. }
  109. return($arrLayersNew);
  110. }
  111. /**
  112. *
  113. * get slide params
  114. */
  115. public function getParams(){
  116. $this->validateInited();
  117. return($this->params);
  118. }
  119. /**
  120. *
  121. * get parameter from params array. if no default, then the param is a must!
  122. */
  123. function getParam($name,$default=null){
  124. if($default === null){
  125. if(!array_key_exists($name, $this->params))
  126. UniteFunctionsRev::throwError("The param <b>$name</b> not found in slide params.");
  127. $default = "";
  128. }
  129. return UniteFunctionsRev::getVal($this->params, $name,$default);
  130. }
  131. /**
  132. *
  133. * get image filename
  134. */
  135. public function getImageFilename(){
  136. return($this->imageFilename);
  137. }
  138. /**
  139. *
  140. * get image filepath
  141. */
  142. public function getImageFilepath(){
  143. return($this->imageFilepath);
  144. }
  145. /**
  146. *
  147. * get image url
  148. */
  149. public function getImageUrl(){
  150. return($this->imageUrl);
  151. }
  152. /**
  153. *
  154. * get the slider id
  155. */
  156. public function getSliderID(){
  157. return($this->sliderID);
  158. }
  159. /**
  160. *
  161. * validate that the slider exists
  162. */
  163. private function validateSliderExists($sliderID){
  164. $slider = new RevSlider();
  165. $slider->initByID($sliderID);
  166. }
  167. /**
  168. *
  169. * validate that the slide is inited and the id exists.
  170. */
  171. private function validateInited(){
  172. if(empty($this->id))
  173. UniteFunctionsRev::throwError("The slide is not inited!!!");
  174. }
  175. /**
  176. *
  177. * create the slide (from image)
  178. */
  179. public function createSlide($sliderID,$urlImage){
  180. //get max order
  181. $slider = new RevSlider();
  182. $slider->initByID($sliderID);
  183. $maxOrder = $slider->getMaxOrder();
  184. $order = $maxOrder+1;
  185. $params = array();
  186. $params["image"] = $urlImage;
  187. $jsonParams = json_encode($params);
  188. $arrInsert = array("params"=>$jsonParams,
  189. "slider_id"=>$sliderID,
  190. "slide_order"=>$order,
  191. "layers"=>""
  192. );
  193. $slideID = $this->db->insert(GlobalsRevSlider::$table_slides, $arrInsert);
  194. return($slideID);
  195. }
  196. /**
  197. *
  198. * update slide image from data
  199. */
  200. public function updateSlideImageFromData($data){
  201. $slideID = UniteFunctionsRev::getVal($data, "slide_id");
  202. $this->initByID($slideID);
  203. $urlImage = UniteFunctionsRev::getVal($data, "url_image");
  204. UniteFunctionsRev::validateNotEmpty($urlImage);
  205. $arrUpdate = array();
  206. $arrUpdate["image"] = $urlImage;
  207. $this->updateParamsInDB($arrUpdate);
  208. return($urlImage);
  209. }
  210. /**
  211. *
  212. * update slide parameters in db
  213. */
  214. private function updateParamsInDB($arrUpdate){
  215. $this->params = array_merge($this->params,$arrUpdate);
  216. $jsonParams = json_encode($this->params);
  217. $arrDBUpdate = array("params"=>$jsonParams);
  218. $this->db->update(GlobalsRevSlider::$table_slides,$arrDBUpdate,array("id"=>$this->id));
  219. }
  220. /**
  221. *
  222. * sort layers by order
  223. */
  224. private function sortLayersByOrder($layer1,$layer2){
  225. $layer1 = (array)$layer1;
  226. $layer2 = (array)$layer2;
  227. $order1 = UniteFunctionsRev::getVal($layer1, "order",1);
  228. $order2 = UniteFunctionsRev::getVal($layer2, "order",2);
  229. if($order1 == $order2)
  230. return(0);
  231. return($order1 > $order2);
  232. }
  233. /**
  234. *
  235. * go through the layers and fix small bugs if exists
  236. */
  237. private function normalizeLayers($arrLayers){
  238. usort($arrLayers,array($this,"sortLayersByOrder"));
  239. $arrLayersNew = array();
  240. foreach ($arrLayers as $key=>$layer){
  241. $layer = (array)$layer;
  242. //set type
  243. $type = UniteFunctionsRev::getVal($layer, "type","text");
  244. $layer["type"] = $type;
  245. //normalize position:
  246. $layer["left"] = round($layer["left"]);
  247. $layer["top"] = round($layer["top"]);
  248. //unset order
  249. unset($layer["order"]);
  250. //modify text
  251. $layer["text"] = stripcslashes($layer["text"]);
  252. $arrLayersNew[] = $layer;
  253. }
  254. return($arrLayersNew);
  255. }
  256. /**
  257. *
  258. * normalize params
  259. */
  260. private function normalizeParams($params){
  261. $urlImage = UniteFunctionsRev::getVal($params, "image_url");
  262. $params["image"] = $urlImage;
  263. unset($params["image_url"]);
  264. if(isset($params["video_description"]))
  265. $params["video_description"] = UniteFunctionsRev::normalizeTextareaContent($params["video_description"]);
  266. return($params);
  267. }
  268. /**
  269. *
  270. * update slide from data
  271. * @param $data
  272. */
  273. public function updateSlideFromData($data){
  274. $slideID = UniteFunctionsRev::getVal($data, "slideid");
  275. $this->initByID($slideID);
  276. //treat params
  277. $params = UniteFunctionsRev::getVal($data, "params");
  278. $params = $this->normalizeParams($params);
  279. //treat layers
  280. $layers = UniteFunctionsRev::getVal($data, "layers");
  281. if(gettype($layers) == "string"){
  282. $layers = stripslashes($layers);
  283. $layers = json_decode($layers);
  284. $layers = UniteFunctionsRev::convertStdClassToArray($layers);
  285. }
  286. if(empty($layers) || gettype($layers) != "array")
  287. $layers = array();
  288. $layers = $this->normalizeLayers($layers);
  289. $arrUpdate = array();
  290. $arrUpdate["layers"] = json_encode($layers);
  291. $arrUpdate["params"] = json_encode($params);
  292. $this->db->update(GlobalsRevSlider::$table_slides,$arrUpdate,array("id"=>$this->id));
  293. }
  294. /**
  295. *
  296. * delete slide from data
  297. */
  298. public function deleteSlideFromData($data){
  299. $slideID = UniteFunctionsRev::getVal($data, "slideID");
  300. $this->initByID($slideID);
  301. $this->db->delete(GlobalsRevSlider::$table_slides,"id='$slideID'");
  302. }
  303. /**
  304. *
  305. * set params from client
  306. */
  307. public function setParams($params){
  308. $params = $this->normalizeParams($params);
  309. $this->params = $params;
  310. }
  311. /**
  312. *
  313. * set layers from client
  314. */
  315. public function setLayers($layers){
  316. $layers = $this->normalizeLayers($layers);
  317. $this->arrLayers = $layers;
  318. }
  319. /**
  320. /* toggle slide state from data
  321. */
  322. public function toggleSlideStatFromData($data){
  323. $slideID = UniteFunctionsRev::getVal($data, "slide_id");
  324. $this->initByID($slideID);
  325. $state = $this->getParam("state","published");
  326. $newState = ($state == "published")?"unpublished":"published";
  327. $arrUpdate = array();
  328. $arrUpdate["state"] = $newState;
  329. $this->updateParamsInDB($arrUpdate);
  330. return($newState);
  331. }
  332. }
  333. ?>