/** * add new * delete * duplicate * changestatus */ public function processAJax() { $result = array(); if (Tools::getValue('action') && Tools::getValue('action') == 'submitslider') { if (Tools::getValue('id_slide')) { $slide = new SliderLayer((int) Tools::getValue('id_slide')); if (!Validate::isLoadedObject($slide)) { $this->l('Invalid id_slide'); return; } } else { $slide = new SliderLayer(); } $slide->position = (int) Tools::getValue('position'); $slide->id_group = (int) Tools::getValue('id_group'); /* Sets active */ $slide->active = (int) Tools::getValue('active_slide'); $slide->params = SliderLayer::base64Encode(Tools::jsonEncode(Tools::getValue('slider'))); try { $post_slide = Tools::getValue('slider'); $slide->start_date_time = $post_slide['start_date_time']; $slide->end_date_time = $post_slide['end_date_time']; $slide->id_group = $post_slide['group_id']; $slide->validate($this); } catch (Exception $exc) { $result = array('error' => 1, 'text' => $exc->getMessage()); $this->clearCache(); die(Tools::jsonEncode($result)); } $languages = Language::getLanguages(false); $tmpData = array(); $tmpBackColor = ''; foreach ($languages as $language) { $slide->title[$language['id_lang']] = Tools::getValue('title_' . $language['id_lang']); //get data default $slide->link[$language['id_lang']] = Tools::getValue('link_' . $language['id_lang']); $slide->image[$language['id_lang']] = Tools::getValue('image_' . $language['id_lang']); $slide->thumbnail[$language['id_lang']] = Tools::getValue('thumbnail_' . $language['id_lang']); $video = array(); $video['usevideo'] = Tools::getValue('usevideo_' . $language['id_lang']); $video['videoid'] = Tools::getValue('videoid_' . $language['id_lang']); $video['videoauto'] = Tools::getValue('videoauto_' . $language['id_lang']); $video['background_color'] = Tools::getValue('background_color_' . $language['id_lang']); if ($video['background_color'] == '' && !Tools::getValue('id_slide')) { $video['background_color'] = $tmpBackColor; } else { $tmpBackColor = $video['background_color']; } $slide->video[$language['id_lang']] = SliderLayer::base64Encode(Tools::jsonEncode($video)); $layersparams = new stdClass(); $layersparams->layers = array(); if (Tools::getIsset('layers_' . $language['id_lang'])) { $times = Tools::getValue('layer_time'); $layers = Tools::getValue('layers_' . $language['id_lang']); //echo "<pre>";print_r($times); foreach ($layers as $key => $value) { $value['time_start'] = $times[$value['layer_id']]; //fix for php 5.2 and 5.3 $value['layer_caption'] = utf8_encode(str_replace(array('\'', '\\"'), array("'", '"'), $value['layer_caption'])); $times[$value['layer_id']] = $value; } // echo "<pre>".$language['id_lang'];print_r($times); $k = 0; //echo "<pre>";print_r($times); foreach ($times as $key => $value) { if (is_array($times) && $key == @$value['layer_id']) { $value['layer_id'] = $language['id_lang'] . '_' . ($k + 1); $layersparams->layers[$k] = $value; $k++; } } $slide->layersparams[$language['id_lang']] = SliderLayer::base64Encode(Tools::jsonEncode($layersparams->layers)); } else { //when add new create sample data for other language if (!Tools::getValue('id_slide') && isset($tmpData['layersparams']) && $tmpData['layersparams']) { //set id again foreach ($tmpData['layersparams'] as &$tmpLayer) { foreach ($tmpLayer as $key => &$value) { if ($key == 'layer_id') { $valu = explode('_', $value); $value = str_replace($valu[0] . '_', $language['id_lang'] . '_', $value); } } } //print_r($tmpData['layersparams']); $slide->layersparams[$language['id_lang']] = SliderLayer::base64Encode(Tools::jsonEncode($tmpData['layersparams'])); } else { $slide->layersparams[$language['id_lang']] = ''; } } //get data default if add new if (!Tools::getValue('id_slide') && $slide->title && empty($tmpData)) { $tmpData['title'] = $slide->title[$language['id_lang']]; $tmpData['link'] = $slide->link[$language['id_lang']]; $tmpData['video'] = $slide->video[$language['id_lang']]; $tmpData['image'] = $slide->image[$language['id_lang']]; $tmpData['thumbnail'] = $slide->image[$language['id_lang']]; $tmpData['id_lang'] = $language['id_lang']; $tmpData['image'] = $slide->image[$language['id_lang']]; } if (!Tools::getValue('id_slide') && !isset($tmpData['layersparams'])) { $tmpData['layersparams'] = $layersparams->layers; } } //print_r($slide->layersparams);die(); /* Processes if no errors */ /* Adds */ if (!Tools::getValue('id_slide')) { //add default image foreach ($slide->title as &$value) { if ($value == '') { $value = $tmpData['title']; } } foreach ($slide->link as &$value) { if ($value == '') { $value = $tmpData['link']; } } foreach ($slide->image as &$value) { if ($value == '') { $value = $tmpData['image']; } } foreach ($slide->video as &$value) { if ($value == '') { $value = $tmpData['video']; } } if (!$slide->add()) { $result = array('error' => 1, 'text' => $this->l('The slide could not be added.')); } //add slider } elseif (!$slide->update()) { $result = array('error' => 1, 'text' => $this->l('The slide could not be updated.')); } $myLink = '&configure=leosliderlayer&editSlider=1&id_slide=' . $slide->id . '&id_group=' . $slide->id_group; $result = array('error' => 0, 'text' => $myLink); $this->clearCache(); die(Tools::jsonEncode($result)); } if (Tools::getValue('action') && Tools::getValue('action') == 'updateSlidesPosition' && Tools::getValue('slides')) { $slides = Tools::getValue('slides'); foreach ($slides as $position => $id_slide) { $result = Db::getInstance()->execute(' UPDATE `' . _DB_PREFIX_ . 'leosliderlayer_slides` SET `position` = ' . (int) $position . ' WHERE `id_leosliderlayer_slides` = ' . (int) $id_slide); } $this->clearCache(); die(Tools::jsonEncode($result)); } if (Tools::getValue('action') && Tools::getValue('action') == 'deleteSlider') { $id_slide = Tools::getValue('id_slide'); $slide = new SliderLayer((int) $id_slide); if (!$slide->delete()) { $result = array('error' => 1, 'text' => $this->l('The slide could not be delete.')); } $this->clearCache(); die(Tools::jsonEncode($result)); } if (Tools::getValue('action') && Tools::getValue('action') == 'duplicateSlider') { $slide = new SliderLayer((int) Tools::getValue('id_slide')); $sliderNew = new SliderLayer(); $defined = $sliderNew->getDefinition('SliderLayer'); foreach ($defined['fields'] as $ke => $val) { // validate module : $val is used unset($val); if ($ke == 'id') { continue; } if ($ke == 'title') { $tmp = array(); foreach ($slide->title as $kt => $vt) { $tmp[$kt] = $this->l('Duplicate of') . ' ' . $vt; } $sliderNew->{$ke} = $tmp; } else { $sliderNew->{$ke} = $slide->{$ke}; } } if (!$sliderNew->add()) { $result = array('error' => 1, 'text' => $this->l('The slide could not be duplicate.')); } $this->clearCache(); die(Tools::jsonEncode($result)); } }