示例#1
0
 /**
  * Adds samples
  */
 private function installSamples()
 {
     $languages = Language::getLanguages(false);
     $defaults['sample'] = $this->defaultConf;
     if ($this->isPS6) {
         $defaults['sample']['media']['max']['pos'] = 2;
         $defaults['sample']['media']['max']['lspace'] = 15;
         $defaults['sample']['media']['max']['rspace'] = 15;
     }
     $this->hook = array('sample');
     $standardHooks = array('displayTop' => array(0 => 'sample'));
     if (Shop::isFeatureActive() && $this->context->shop->getContext() == Shop::CONTEXT_ALL) {
         $id_shops = Shop::getContextListShopID();
     } else {
         $id_shops = array(0 => $this->getShopId());
     }
     foreach ($id_shops as $id_shop) {
         $this->saveConfig('HOMESLIDERPRO_STANDARD', $standardHooks, (int) $id_shop);
         $this->saveConfig('HOMESLIDERPRO_HOOKS', $this->hook, (int) $id_shop);
         $this->saveSlideConfiguration($defaults, $id_shop);
         $folder = _PS_MODULE_DIR_ . $this->name . '/images/';
         for ($i = 1; $i <= 5; ++$i) {
             $slide = new HomeSlidePro();
             $slide->position = $i;
             $slide->active = 1;
             $slide->id_hook = 'sample';
             $slide->has_area = 0;
             $resizeObj = new PerfectResize($folder . 'sample-' . $i . '.jpg');
             $resizeObj->resizeImage($defaults['sample']['width'], $defaults['sample']['height'], 'crop');
             $resizeObj->saveImage($folder . 'resize_' . 'sample-' . $i . '.jpg', 90);
             $resizeObj->resizeImage(60, 40, 'crop');
             $resizeObj->saveImage($folder . 'thumb_' . 'sample-' . $i . '.jpg', 90);
             foreach ($languages as $language) {
                 $slide->title[$language['id_lang']] = 'Sample ' . $i;
                 $slide->description[$language['id_lang']] = 'This is a sample picture';
                 $slide->legend[$language['id_lang']] = 'sample-' . $i;
                 $slide->url[$language['id_lang']] = 'http://www.syncrea.it';
                 $slide->image[$language['id_lang']] = 'sample-' . $i . '.jpg';
             }
             $slide->add(true, false, (int) $id_shop);
         }
     }
 }
示例#2
0
 private function _postProcess()
 {
     $errors = array();
     /* Processes Slider */
     if (Tools::isSubmit('submitSlide')) {
         //get slide configuration
         $position = Tools::getValue('hook');
         $confs = $this->configuration;
         $configuration = $confs[$position];
         /* Sets ID if needed */
         if (Tools::getValue('id_slide')) {
             $slide = new HomeSlidePro((int) Tools::getValue('id_slide'));
             if (!Validate::isLoadedObject($slide)) {
                 $this->_html .= $this->displayError($this->l('Invalid id_slide'));
                 return;
             }
         } else {
             $slide = new HomeSlidePro();
         }
         /* Sets position */
         $slide->position = (int) Tools::getValue('position');
         /* Sets active */
         $slide->active = (int) Tools::getValue('active_slide');
         /* Sets new_window */
         $slide->new_window = (int) Tools::getValue('new_window');
         /* Sets has_area */
         $slide->has_area = (int) Tools::getValue('has_area');
         /* set hook */
         $slide->id_hook = Tools::getValue('hook');
         $languages = Language::getLanguages(false);
         $id_lang_default = (int) Configuration::get('PS_LANG_DEFAULT');
         $usedefault = false;
         if ((int) Tools::getValue('crosslanguage') == 1) {
             $usedefault = true;
             if (isset($_FILES['image_' . $id_lang_default])) {
                 $fileDefaultName = $_FILES['image_' . $id_lang_default]['name'];
                 $typeDefault = strtolower(substr(strrchr($fileDefaultName, '.'), 1));
             }
         }
         /* Sets each langue fields */
         $salt = sha1(microtime());
         $tempAreas = Tools::getValue('areas');
         $areas = array();
         if (!empty($tempAreas)) {
             // reset index of areas
             foreach ($tempAreas as $lang => $areaData) {
                 $n = 0;
                 foreach ($areaData as $area) {
                     foreach ($area as $i => $field) {
                         $area[$i] = $field;
                     }
                     $areas[$lang][$n] = $area;
                     $n++;
                 }
             }
         }
         /* quality for image resize */
         $quality = isset($this->settings['img_ql']) ? $this->settings['img_ql'] : 90;
         foreach ($languages as $language) {
             $slide->title[$language['id_lang']] = Tools::getValue('title_' . $language['id_lang']);
             $slide->url[$language['id_lang']] = Tools::getValue('url_' . $language['id_lang']);
             $slide->legend[$language['id_lang']] = Tools::getValue('legend_' . $language['id_lang']);
             $slide->description[$language['id_lang']] = Tools::getValue('description_' . $language['id_lang']);
             $areaLang = $language['id_lang'];
             if (Tools::getValue('areacrosslang') == 1) {
                 $areaLang = $id_lang_default;
             }
             if (isset($areas[$areaLang])) {
                 $slide->areas[$language['id_lang']] = json_encode($areas[$areaLang], JSON_HEX_QUOT | JSON_HEX_TAG);
             } else {
                 $slide->areas[$language['id_lang']] = '';
             }
             $langID = $language['id_lang'];
             if ($usedefault) {
                 $langID = $id_lang_default;
             }
             $type = strtolower(substr(strrchr($_FILES['image_' . $langID]['name'], '.'), 1));
             $cleanFileName = str_replace('.' . $type, '', $_FILES['image_' . $langID]['name']);
             $cleanFileName = preg_replace("/[^a-zA-Z0-9.-]/", "", $cleanFileName);
             /* Uploads image and sets slide only if current language is the same  */
             if ($langID == $language['id_lang']) {
                 $imagesize = array();
                 $imagesize = @getimagesize($_FILES['image_' . $langID]['tmp_name']);
                 if (isset($_FILES['image_' . $langID]) && isset($_FILES['image_' . $langID]['tmp_name']) && !empty($_FILES['image_' . $langID]['tmp_name']) && !empty($imagesize) && in_array(strtolower(substr(strrchr($imagesize['mime'], '/'), 1)), array('jpg', 'gif', 'jpeg', 'png')) && in_array($type, array('jpg', 'gif', 'jpeg', 'png'))) {
                     $fileName = $this->file_newname(_PS_MODULE_DIR_ . $this->module->name . '/images/', $cleanFileName, $type, $langID);
                     //$temp_name = tempnam(_PS_TMP_IMG_DIR_, 'PS');
                     $temp_name = _PS_MODULE_DIR_ . $this->module->name . '/images/' . $fileName . '.' . $type;
                     if ($error = PerfectResize::validateUpload($_FILES['image_' . $langID])) {
                         $errors[] = $error;
                     } elseif (!$temp_name || !move_uploaded_file($_FILES['image_' . $langID]['tmp_name'], $temp_name)) {
                         return false;
                     } else {
                         // *** 1) Initialize / load image
                         $resizeObj = new PerfectResize($temp_name);
                         // *** 2) Resize image (options: exact, portrait, landscape, auto, crop)
                         $resizeObj->resizeImage($configuration['width'], $configuration['height'], 'crop');
                         // *** 3) Save image
                         $resizeObj->saveImage(_PS_MODULE_DIR_ . $this->module->name . '/images/resize_' . $fileName . '.' . $type, $quality);
                         //creaThumb
                         $resizeObj->resizeImage(60, 40, 'crop');
                         $resizeObj->saveImage(_PS_MODULE_DIR_ . $this->module->name . '/images/thumb_' . $fileName . '.' . $type, 90);
                     }
                     // save image into slide object
                     $slide->image[$language['id_lang']] = $fileName . '.' . $type;
                 }
             } elseif ($usedefault) {
                 $fileName = $this->file_newname(_PS_MODULE_DIR_ . $this->module->name . '/images/', $cleanFileName, $type, $langID);
                 $slide->image[$language['id_lang']] = $fileName . '.' . $typeDefault;
             } elseif (Tools::getValue('image_old_' . $language['id_lang']) != '') {
                 $slide->image[$language['id_lang']] = Tools::getValue('image_old_' . $language['id_lang']);
             }
         }
         /* Processes if no errors  */
         if (!$errors) {
             /* Adds */
             if (!Tools::getValue('id_slide')) {
                 if (!$slide->add()) {
                     $errors[] = $this->l('The slide could not be added.');
                 } else {
                     $this->slide = $slide;
                 }
             } elseif (!$slide->update()) {
                 $errors[] = $this->l('The slide could not be updated.');
             }
         }
     } elseif (Tools::isSubmit('delete_id_slide')) {
         $slide = new HomeSlidePro((int) Tools::getValue('delete_id_slide'));
         $res = $slide->delete();
         if (!$res) {
             $this->_html .= $this->displayError('Could not delete');
         } else {
             $this->_html .= $this->displayConfirmation($this->l('Slide deleted'));
         }
     } else {
         if (Tools::isSubmit('addHook')) {
             unset($_POST['sort']);
             $slideName = Tools::getValue('newSlide');
             $slideName = strtolower(str_replace(' ', '_', $slideName));
             $slideName = preg_replace('/[^a-za-z_\']/', '', $slideName);
             if (!empty($slideName) && $slideName != '') {
                 //check if something is entered in hook name
                 if (!in_array($slideName, $this->hook)) {
                     //check if hook name is already used
                     $this->hook[] = $slideName;
                     //assign default configuration to the new slider
                     $this->configuration[$slideName] = $this->defaultConfigs;
                     //update the class array without a new query
                     $this->module->saveConfig('HOMESLIDERPRO_HOOKS', $this->hook, (int) $this->module->getShopId());
                     $this->module->saveSlideConfiguration($this->configuration, $this->module->getShopId());
                     header("location:" . $_SERVER["REQUEST_URI"] . (isset($slide) && $slide->id ? '&id_slide=' . $slide->id : ''));
                 } else {
                     $errors[] = $this->l('Slider name already used.');
                 }
             } else {
                 $errors[] = $this->l('Slider name cannot be empty.');
             }
         } else {
             if (Tools::isSubmit('deleteHook')) {
                 unset($_POST['sort']);
                 $choiches = Tools::getValue('hooksetup');
                 if (!empty($choiches) && is_array($choiches)) {
                     foreach ($choiches as $key => $hook) {
                         $this->module->removeCatHook($hook);
                         $slides = $this->module->getSlides(null, $hook);
                         if ($slides) {
                             foreach ($slides as $slide) {
                                 $slide = new HomeSlidePro((int) $slide['id_slide']);
                                 $slide->delete();
                             }
                         }
                         unset($this->hook[$key]);
                         $this->module->deleteSlideConfiguration($hook);
                     }
                     $this->module->saveConfig('HOMESLIDERPRO_HOOKS', $this->hook, (int) $this->module->getShopId());
                     header("location:" . $_SERVER["REQUEST_URI"] . (isset($slide) && $slide->id ? '&id_slide=' . $slide->id : ''));
                 }
                 // save hooks and sort order
             } else {
                 if (Tools::isSubmit('saveHooks')) {
                     $error = false;
                     $hooks_sort = Tools::getValue('sort');
                     $this->module->saveConfig('HOMESLIDERPRO_HOOKS', $hooks_sort, (int) $this->module->getShopId());
                     $standardHooks = Tools::getValue('standardHooks');
                     $this->module->saveConfig('HOMESLIDERPRO_STANDARD', $standardHooks, (int) $this->module->getShopId());
                     $catHooks = Tools::getValue('cat');
                     if ($this->checkduplicates($catHooks)) {
                         foreach ($catHooks as $hook => $idCat) {
                             if (Validate::isInt($idCat)) {
                                 if (!$this->module->saveCatHook($hook, $idCat)) {
                                     $error = true;
                                 }
                             } else {
                                 if (empty($idCat) || $idCat == '') {
                                     $this->module->removeCatHook($hook);
                                 } else {
                                     $error = true;
                                 }
                             }
                         }
                     } else {
                         $error = true;
                         $this->_html .= $this->displayError($this->l('Cannot set the same Category id on multiple hooks!'));
                     }
                     if (!$error) {
                         $this->_html .= $this->displayConfirmation($this->l('Positions updated'));
                     }
                     header("location:" . $_SERVER["REQUEST_URI"] . (isset($slide) && $slide->id ? '&id_slide=' . $slide->id : ''));
                 }
             }
         }
     }
     /* Display errors if needed */
     if (count($errors)) {
         $this->_html .= $this->displayError(implode('<br />', $errors));
     } elseif (Tools::isSubmit('submitSlide') && Tools::getValue('id_slide')) {
         $this->_html .= $this->displayConfirmation($this->l('Slide updated'));
     } elseif (Tools::isSubmit('submitSlide')) {
         $this->_html .= $this->displayConfirmation($this->l('Slide added'));
     }
 }