Example #1
0
    /**
     * 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));
        }
    }