PageRenderTime 27ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/plugins/nextend-smart-slider3-pro/library/smartslider/backend/controllers/ajax/Slider.php

https://bitbucket.org/NoOYee/housing-students
PHP | 338 lines | 277 code | 61 blank | 0 comment | 18 complexity | 33e81a8e1c024d0591eba591268ce318 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1
  1. <?php
  2. class N2SmartsliderBackendSliderControllerAjax extends N2SmartSliderControllerAjax {
  3. public function initialize() {
  4. parent::initialize();
  5. N2Loader::import(array(
  6. 'models.Ajax',
  7. 'models.Sliders',
  8. 'models.Slides',
  9. 'models.generator'
  10. ), 'smartslider');
  11. }
  12. public function actionCreate() {
  13. $this->validateToken();
  14. $this->validatePermission('smartslider_edit');
  15. $slidersModel = new N2SmartsliderSlidersModel();
  16. $title = N2Request::getVar('sliderTitle');
  17. $this->validateVariable(!empty($title), 'slider name');
  18. $slider = array(
  19. 'type' => 'simple',
  20. 'title' => N2Request::getVar('sliderTitle'),
  21. 'width' => max(N2Request::getInt('sliderSizeWidth', 800), 50),
  22. 'height' => max(N2Request::getInt('sliderSizeHeight', 500), 50)
  23. );
  24. $preset = N2Request::getVar('preset');
  25. switch ($preset) {
  26. case 'fullwidth':
  27. $slider['responsive-mode'] = 'fullwidth';
  28. $slider['widgetarrow'] = 'imageEmpty';
  29. break;
  30. case 'fullpage':
  31. $slider['responsive-mode'] = 'fullpage';
  32. $slider['widgetarrow'] = 'imageEmpty';
  33. break;
  34. case 'block':
  35. $slider['type'] = 'block';
  36. $slider['responsive-mode'] = 'fullwidth';
  37. break;
  38. case 'showcase':
  39. $slider['type'] = 'showcase';
  40. $slider['slide-width'] = intval($slider['width'] * 0.8);
  41. $slider['slide-height'] = intval($slider['height'] * 0.8);
  42. break;
  43. case 'carousel':
  44. $slider['responsiveScaleUp'] = 1;
  45. $slider['type'] = 'carousel';
  46. $slider['slide-width'] = intval(($slider['width'] - 40) * 0.32);
  47. $slider['slide-height'] = intval($slider['height'] * 0.8);
  48. $slider['widgetbullet'] = 'transitionRectangle';
  49. $slider['widgetarrow'] = 'disabled';
  50. break;
  51. case 'thumbnailhorizontal':
  52. $slider['widgetthumbnail'] = 'default';
  53. break;
  54. case 'thumbnailvertical':
  55. $slider['widgetthumbnail'] = 'default';
  56. $slider['widget-thumbnail-position-area'] = '8';
  57. break;
  58. case 'caption':
  59. $slider['widgetarrow'] = 'imageEmpty';
  60. $slider['widgetbar'] = 'horizontalFull';
  61. break;
  62. case 'horizontalaccordion':
  63. $slider['type'] = 'accordion';
  64. $slider['orientation'] = 'horizontal';
  65. break;
  66. case 'verticalaccordion':
  67. $slider['type'] = 'accordion';
  68. $slider['orientation'] = 'vertical';
  69. break;
  70. default:
  71. $slider['widgetarrow'] = 'imageEmpty';
  72. }
  73. $sliderid = $slidersModel->create($slider, N2Request::getVar('groupID', 0));
  74. N2Message::success(n2_('Slider created.'));
  75. $this->response->redirect(array(
  76. "slider/edit",
  77. array("sliderid" => $sliderid)
  78. ));
  79. }
  80. public function actionEdit() {
  81. $this->validateToken();
  82. $this->validatePermission('smartslider_edit');
  83. if (N2Request::getInt('save')) {
  84. $slidersModel = new N2SmartsliderSlidersModel();
  85. $slider = $slidersModel->get(N2Request::getInt('sliderid'));
  86. $this->validateDatabase($slider);
  87. $responseData = $slidersModel->save($slider['id'], N2Request::getVar('slider'));
  88. if ($responseData !== false) {
  89. N2Message::success(n2_('Slider saved.'));
  90. $this->response->respond($responseData);
  91. }
  92. }
  93. $response = null;
  94. $id = N2Request::getCmd('id');
  95. $ajaxModel = new N2SmartSliderAjaxModel();
  96. ob_start();
  97. switch ($id) {
  98. case 'slidertype':
  99. $response = $ajaxModel->sliderType($this->appType);
  100. break;
  101. case 'sliderresponsivemode':
  102. $response = $ajaxModel->sliderResponsiveMode($this->appType);
  103. break;
  104. case 'sliderwidgetarrow':
  105. $response = $ajaxModel->sliderWidget($this->appType, 'arrow');
  106. break;
  107. case 'sliderwidgetbullet':
  108. $response = $ajaxModel->sliderWidget($this->appType, 'bullet');
  109. break;
  110. case 'sliderwidgetautoplay':
  111. $response = $ajaxModel->sliderWidget($this->appType, 'autoplay');
  112. break;
  113. case 'sliderwidgetindicator':
  114. $response = $ajaxModel->sliderWidget($this->appType, 'indicator');
  115. break;
  116. case 'sliderwidgetfullscreen':
  117. $response = $ajaxModel->sliderWidget($this->appType, 'fullscreen');
  118. break;
  119. case 'sliderwidgetbar':
  120. $response = $ajaxModel->sliderWidget($this->appType, 'bar');
  121. break;
  122. case 'sliderwidgetthumbnail':
  123. $response = $ajaxModel->sliderWidget($this->appType, 'thumbnail');
  124. break;
  125. case 'sliderwidgetshadow':
  126. $response = $ajaxModel->sliderWidget($this->appType, 'shadow');
  127. break;
  128. case 'sliderwidgethtml':
  129. $response = $ajaxModel->sliderWidget($this->appType, 'html');
  130. break;
  131. }
  132. if ($response == null) {
  133. $response = array(
  134. 'html' => '',
  135. 'script' => ''
  136. );
  137. }
  138. $response['html'] .= ob_get_clean();
  139. $this->response->respond($response);
  140. }
  141. public function actionImportDemo() {
  142. $this->validateToken();
  143. $this->validatePermission('smartslider_edit');
  144. $key = 'http:' . n2_base64_decode(N2Request::getVar('key'));
  145. if (strpos($key, 'http://smartslider3.com/') !== 0) {
  146. N2Message::error(sprintf(n2_('Import url is not valid: %s'), $key));
  147. $this->response->error();
  148. }
  149. if (!N2SmartsliderLicenseModel::getInstance()
  150. ->hasKey()
  151. ) {
  152. N2Message::error(n2_('License key required for premium features!'));
  153. $this->response->error();
  154. }
  155. $posts = array(
  156. 'action' => 'asset',
  157. 'asset' => $key,
  158. 'version' => N2SS3::$version
  159. );
  160. $result = N2SS3::api($posts);
  161. if (!is_string($result)) {
  162. $hasError = N2SS3::hasApiError($result['status'], array(
  163. 'key' => $key
  164. ));
  165. if (is_array($hasError)) {
  166. $this->redirect($hasError);
  167. } else if ($hasError !== false) {
  168. $this->response->error();
  169. }
  170. } else {
  171. N2Loader::import(array(
  172. 'models.Sliders',
  173. 'models.Slides'
  174. ), 'smartslider');
  175. N2Loader::import('libraries.import', 'smartslider');
  176. $import = new N2SmartSliderImport();
  177. $sliderId = $import->import($result, N2Request::getVar('groupID', 0), 'clone', 1, false);
  178. if ($sliderId !== false) {
  179. N2Message::success(n2_('Slider imported.'));
  180. $this->response->redirect(array(
  181. "slider/edit",
  182. array("sliderid" => $sliderId)
  183. ));
  184. } else {
  185. N2Message::error(n2_('Import error!'));
  186. $this->response->error();
  187. }
  188. }
  189. $this->response->respond();
  190. }
  191. public function actionDuplicate() {
  192. $this->validateToken();
  193. $this->validatePermission('smartslider_edit');
  194. $sliderId = N2Request::getInt('sliderid');
  195. $this->validateVariable($sliderId > 0, 'Slider');
  196. $slidersModel = new N2SmartsliderSlidersModel();
  197. $newSliderId = $slidersModel->duplicate($sliderId, true);
  198. $slider = $slidersModel->getWithThumbnail($newSliderId);
  199. $this->validateDatabase($slider);
  200. N2Message::success(n2_('Slide duplicated.'));
  201. $this->addView('sliderbox', array(
  202. 'slider' => $slider
  203. ));
  204. ob_start();
  205. $this->render();
  206. $box = ob_get_clean();
  207. $this->response->respond($box);
  208. }
  209. public function actionCreateGroup() {
  210. $this->validateToken();
  211. $this->validatePermission('smartslider_edit');
  212. $slidersModel = new N2SmartsliderSlidersModel();
  213. $title = N2Request::getVar('title');
  214. $this->validateVariable(!empty($title), 'group name');
  215. $slider = array(
  216. 'type' => 'group',
  217. 'title' => $title
  218. );
  219. $sliderid = $slidersModel->create($slider);
  220. $slider = $slidersModel->getWithThumbnail($sliderid);
  221. $this->validateDatabase($slider);
  222. $this->addView('sliderbox', array(
  223. 'slider' => $slider
  224. ));
  225. ob_start();
  226. $this->render();
  227. $box = ob_get_clean();
  228. $this->response->respond($box);
  229. }
  230. public function actionRemoveFromGroup() {
  231. $this->validateToken();
  232. $currentGroupID = N2Request::getInt('currentGroupID', 0);
  233. $this->validateVariable($currentGroupID, 'group');
  234. $sliders = N2Request::getVar('sliders');
  235. if (!is_array($sliders)) {
  236. N2Message::error(n2_('Missing sliders!'));
  237. $this->response->error();
  238. }
  239. $xref = new N2SmartsliderSlidersXrefModel();
  240. foreach ($sliders AS $sliderID) {
  241. $xref->deleteXref($currentGroupID, $sliderID);
  242. }
  243. $this->response->respond();
  244. }
  245. public function actionAddToGroup() {
  246. $this->validateToken();
  247. $this->validatePermission('smartslider_edit');
  248. $action = N2Request::getCmd('action');
  249. $this->validateVariable($action, 'Action');
  250. $currentGroupID = N2Request::getInt('currentGroupID', 0);
  251. $groupID = N2Request::getInt('groupID');
  252. $this->validateVariable($groupID, 'group');
  253. $sliders = N2Request::getVar('sliders');
  254. if (!is_array($sliders)) {
  255. N2Message::error(n2_('Missing sliders!'));
  256. $this->response->error();
  257. }
  258. $slidersModel = new N2SmartsliderSlidersModel();
  259. $xref = new N2SmartsliderSlidersXrefModel();
  260. foreach ($sliders AS $sliderID) {
  261. switch ($action) {
  262. case 'copy':
  263. $newSliderID = $slidersModel->duplicate($sliderID, false);
  264. $xref->add($groupID, $newSliderID);
  265. break;
  266. case 'link':
  267. $xref->add($groupID, $sliderID);
  268. break;
  269. default:
  270. $xref->deleteXref($currentGroupID, $sliderID);
  271. $xref->add($groupID, $sliderID);
  272. break;
  273. }
  274. }
  275. $this->response->respond();
  276. }
  277. }