Chetanilead Posted July 3, 2014 Share Posted July 3, 2014 Hi all, Can anyone please tell how can I upload a image in prestashop. I have created a module in which I add values from admin section. I need to upload image with the values. I have created my own controller and classes in my module. It is add/update/delete the record but I am unable to upload image with that. Please help I want to implement it urgently.. Thanks in advance Link to comment Share on other sites More sharing options...
vekia Posted July 4, 2014 Share Posted July 4, 2014 hello how you created all of fields you mentioned? can you show little piece of code? Link to comment Share on other sites More sharing options...
Chetanilead Posted July 4, 2014 Author Share Posted July 4, 2014 Hello Vekia please find the attached controller and class file code AdminMakersController.php Makers.php Link to comment Share on other sites More sharing options...
Chetanilead Posted July 7, 2014 Author Share Posted July 7, 2014 (edited) Hello vekia I am waiting for your response please help ASAP Edited July 7, 2014 by Chetanilead (see edit history) Link to comment Share on other sites More sharing options...
Andron777 Posted September 15, 2014 Share Posted September 15, 2014 (edited) Hello, After playing around with it, errors disappeared, but the image2 is not uploading in DB. Here is me code, and what i have achieved till now. continue playing with it. Hope some one will give me a hint!!! protected function createTables() { /* Slides */ $res = (bool)Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'homesliderafisa` ( `id_homesliderafisa_slides` int(10) unsigned NOT NULL AUTO_INCREMENT, `id_shop` int(10) unsigned NOT NULL, PRIMARY KEY (`id_homesliderafisa_slides`, `id_shop`) ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=UTF8; '); /* Slides configuration */ $res &= Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'homesliderafisa_slides` ( `id_homesliderafisa_slides` int(10) unsigned NOT NULL AUTO_INCREMENT, `position` int(10) unsigned NOT NULL DEFAULT \'0\', `active` tinyint(1) unsigned NOT NULL DEFAULT \'0\', PRIMARY KEY (`id_homesliderafisa_slides`) ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=UTF8; '); /* Slides lang configuration */ $res &= Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'homesliderafisa_slides_lang` ( `id_homesliderafisa_slides` int(10) unsigned NOT NULL, `id_lang` int(10) unsigned NOT NULL, `title` varchar(255) NOT NULL, `description` text NOT NULL, `legend` varchar(255) NOT NULL, `url` varchar(255) NOT NULL, `image` varchar(255) NOT NULL, `image2` varchar(255) NOT NULL, PRIMARY KEY (`id_homesliderafisa_slides`,`id_lang`) ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=UTF8; '); return $res; } /** * deletes tables */ protected function deleteTables() { $slides = $this->getSlides(); foreach ($slides as $slide) { $to_del = new HomeSlideafisa($slide['id_slide']); $to_del->delete(); } return Db::getInstance()->execute(' DROP TABLE IF EXISTS `'._DB_PREFIX_.'homesliderafisa`, `'._DB_PREFIX_.'homesliderafisa_slides`, `'._DB_PREFIX_.'homesliderafisa_slides_lang`; '); } public function getContent() { $this->_html .= $this->headerHTML(); /* Validate & process */ if (Tools::isSubmit('submitSlide') || Tools::isSubmit('delete_id_slide') || Tools::isSubmit('submitSlider') || Tools::isSubmit('changeStatus') ) { if ($this->_postValidation()) { $this->_postProcess(); $this->_html .= $this->renderForm(); $this->_html .= $this->renderList(); } else $this->_html .= $this->renderAddForm(); $this->clearCache(); } elseif (Tools::isSubmit('addSlide') || (Tools::isSubmit('id_slide') && $this->slideExists((int)Tools::getValue('id_slide')))) $this->_html .= $this->renderAddForm(); else { $this->_html .= $this->renderForm(); $this->_html .= $this->renderList(); } return $this->_html; } private function _postValidation() { $errors = array(); /* Validation for Slider configuration */ if (Tools::isSubmit('submitSlider')) { if (!Validate::isInt(Tools::getValue('HOMESLIDER_SPEED')) || !Validate::isInt(Tools::getValue('HOMESLIDER_PAUSE')) || !Validate::isInt(Tools::getValue('HOMESLIDER_WIDTH')) ) $errors[] = $this->l('Invalid values'); } /* Validation for status */ elseif (Tools::isSubmit('changeStatus')) { if (!Validate::isInt(Tools::getValue('id_slide'))) $errors[] = $this->l('Invalid slide'); } /* Validation for Slide */ elseif (Tools::isSubmit('submitSlide')) { /* Checks state (active) */ if (!Validate::isInt(Tools::getValue('active_slide')) || (Tools::getValue('active_slide') != 0 && Tools::getValue('active_slide') != 1)) $errors[] = $this->l('Invalid slide state.'); /* Checks position */ if (!Validate::isInt(Tools::getValue('position')) || (Tools::getValue('position') < 0)) $errors[] = $this->l('Invalid slide position.'); /* If edit : checks id_slide */ if (Tools::isSubmit('id_slide')) { //d(var_dump(Tools::getValue('id_slide'))); if (!Validate::isInt(Tools::getValue('id_slide')) && !$this->slideExists(Tools::getValue('id_slide'))) $errors[] = $this->l('Invalid slide ID'); } /* Checks title/url/legend/description/image */ $languages = Language::getLanguages(false); foreach ($languages as $language) { if (Tools::strlen(Tools::getValue('title_'.$language['id_lang'])) > 255) $errors[] = $this->l('The title is too long.'); if (Tools::strlen(Tools::getValue('legend_'.$language['id_lang'])) > 255) $errors[] = $this->l('The caption is too long.'); if (Tools::strlen(Tools::getValue('url_'.$language['id_lang'])) > 255) $errors[] = $this->l('The URL is too long.'); if (Tools::strlen(Tools::getValue('description_'.$language['id_lang'])) > 4000) $errors[] = $this->l('The description is too long.'); if (Tools::strlen(Tools::getValue('url_'.$language['id_lang'])) > 0 && !Validate::isUrl(Tools::getValue('url_'.$language['id_lang']))) $errors[] = $this->l('The URL format is not correct.'); //if (Tools::getValue('image_'.$language['id_lang']) != null && !Validate::isFileName(Tools::getValue('image_'.$language['id_lang']))) // $errors[] = $this->l('Invalid filename.'); //if (Tools::getValue('image_old_'.$language['id_lang']) != null && !Validate::isFileName(Tools::getValue('image_old_'.$language['id_lang']))) // $errors[] = $this->l('Invalid filename.'); } /* Checks title/url/legend/description for default lang */ $id_lang_default = (int)Configuration::get('PS_LANG_DEFAULT'); if (Tools::strlen(Tools::getValue('title_'.$id_lang_default)) == 0) $errors[] = $this->l('The title is not set.'); if (Tools::strlen(Tools::getValue('legend_'.$id_lang_default)) == 0) $errors[] = $this->l('The caption is not set.'); if (Tools::strlen(Tools::getValue('url_'.$id_lang_default)) == 0) $errors[] = $this->l('The URL is not set.'); //if (!Tools::isSubmit('has_picture') && (!isset($_FILES['image_'.$id_lang_default]) || empty($_FILES['image_'.$id_lang_default]['tmp_name']))) // $errors[] = $this->l('The image is not set.'); //if (Tools::getValue('image_old_'.$id_lang_default) && !Validate::isFileName(Tools::getValue('image_old_'.$id_lang_default))) // $errors[] = $this->l('The image is not set.'); } /* Validation for deletion */ elseif (Tools::isSubmit('delete_id_slide') && (!Validate::isInt(Tools::getValue('delete_id_slide')) || !$this->slideExists((int)Tools::getValue('delete_id_slide')))) $errors[] = $this->l('Invalid slide ID'); /* Display errors if needed */ if (count($errors)) { $this->_html .= $this->displayError(implode('<br />', $errors)); return false; } /* Returns if validation is ok */ return true; } private function _postProcess() { $errors = array(); /* Processes Slider */ if (Tools::isSubmit('submitSlider')) { $res = Configuration::updateValue('HOMESLIDER_WIDTH', (int)Tools::getValue('HOMESLIDER_WIDTH')); $res &= Configuration::updateValue('HOMESLIDER_SPEED', (int)Tools::getValue('HOMESLIDER_SPEED')); $res &= Configuration::updateValue('HOMESLIDER_PAUSE', (int)Tools::getValue('HOMESLIDER_PAUSE')); $res &= Configuration::updateValue('HOMESLIDER_LOOP', (int)Tools::getValue('HOMESLIDER_LOOP')); $this->clearCache(); if (!$res) $errors[] = $this->displayError($this->l('The configuration could not be updated.')); else Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules', true).'&conf=6&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name); } /* Process Slide status */ elseif (Tools::isSubmit('changeStatus') && Tools::isSubmit('id_slide')) { $slide = new HomeSlideafisa((int)Tools::getValue('id_slide')); if ($slide->active == 0) $slide->active = 1; else $slide->active = 0; $res = $slide->update(); $this->clearCache(); $this->_html .= ($res ? $this->displayConfirmation($this->l('Configuration updated')) : $this->displayError($this->l('The configuration could not be updated.'))); } /* Processes Slide */ elseif (Tools::isSubmit('submitSlide')) { /* Sets ID if needed */ if (Tools::getValue('id_slide')) { $slide = new HomeSlideafisa((int)Tools::getValue('id_slide')); if (!Validate::isLoadedObject($slide)) { $this->_html .= $this->displayError($this->l('Invalid slide ID')); return false; } } else $slide = new HomeSlideafisa(); /* Sets position */ $slide->position = (int)Tools::getValue('position'); /* Sets active */ $slide->active = (int)Tools::getValue('active_slide'); /* Sets each langue fields */ $languages = Language::getLanguages(false); 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']); /* Uploads image and sets slide */ $type = Tools::strtolower(Tools::substr(strrchr($_FILES['image_'.$language['id_lang']]['name'], '.'), 1)); $imagesize = @getimagesize($_FILES['image_'.$language['id_lang']]['tmp_name']); if (isset($_FILES['image_'.$language['id_lang']]) && isset($_FILES['image_'.$language['id_lang']]['tmp_name']) && !empty($_FILES['image_'.$language['id_lang']]['tmp_name']) && !empty($imagesize) && in_array( Tools::strtolower(Tools::substr(strrchr($imagesize['mime'], '/'), 1)), array( 'jpg', 'gif', 'jpeg', 'png' ) ) && in_array($type, array('jpg', 'gif', 'jpeg', 'png')) ) { $temp_name = tempnam(_PS_TMP_IMG_DIR_, 'PS'); $salt = sha1(microtime()); if ($error = ImageManager::validateUpload($_FILES['image_'.$language['id_lang']])) $errors[] = $error; elseif (!$temp_name || !move_uploaded_file($_FILES['image_'.$language['id_lang']]['tmp_name'], $temp_name)) return false; elseif (!ImageManager::resize($temp_name, dirname(__FILE__).'/images/'.$salt.'_'.$_FILES['image_'.$language['id_lang']]['name'], null, null, $type)) $errors[] = $this->displayError($this->l('An error occurred during the image upload process.')); if (isset($temp_name)) @unlink($temp_name); $slide->image[$language['id_lang']] = $salt.'_'.$_FILES['image_'.$language['id_lang']]['name']; } elseif (Tools::getValue('image_old_'.$language['id_lang']) != '') $slide->image[$language['id_lang']] = Tools::getValue('image_old_'.$language['id_lang']); /* Uploads image2 and sets slide */ $type2 = Tools::strtolower(Tools::substr(strrchr($_FILES['image2_'.$language['id_lang']]['name'], '.'), 1)); $imagesize2 = @getimagesize($_FILES['image2_'.$language['id_lang']]['tmp_name']); if (isset($_FILES['image2_'.$language['id_lang']]) && isset($_FILES['image2_'.$language['id_lang']]['tmp_name']) && !empty($_FILES['image2_'.$language['id_lang']]['tmp_name']) && !empty($imagesize2) && in_array( Tools::strtolower(Tools::substr(strrchr($imagesize2['mime'], '/'), 1)), array( 'jpg', 'gif', 'jpeg', 'png' ) ) && in_array($type2, array('jpg', 'gif', 'jpeg', 'png')) ) { $temp_name2 = tempnam(_PS_TMP_IMG_DIR_, 'PS'); $salt2 = sha1(microtime()); if ($error = ImageManager::validateUpload($_FILES['image2_'.$language['id_lang']])) $errors[] = $error; elseif (!$temp_name2 || !move_uploaded_file($_FILES['image2_'.$language['id_lang']]['tmp_name'], $temp_name2)) return false; elseif (!ImageManager::resize($temp_name2, dirname(__FILE__).'/images/'.$salt2.'_'.$_FILES['image2_'.$language['id_lang']]['name'], null, null, $type2)) $errors[] = $this->displayError($this->l('An error occurred during the image2 upload process.')); if (isset($temp_name2)) @unlink($temp_name2); $slide2->image2[$language['id_lang']] = $salt2.'_'.$_FILES['image2_'.$language['id_lang']]['name']; } elseif (Tools::getValue('image2_old_'.$language['id_lang']) != '') $slide2->image2[$language['id_lang']] = Tools::getValue('image2_old_'.$language['id_lang']); } /* Processes if no errors */ if (!$errors) { /* Adds */ if (!Tools::getValue('id_slide')) { if (!$slide->add()) $errors[] = $this->displayError($this->l('The slide could not be added.')); } /* Update */ elseif (!$slide->update()) $errors[] = $this->displayError($this->l('The slide could not be updated.')); $this->clearCache(); } } /* Deletes */ elseif (Tools::isSubmit('delete_id_slide')) { $slide = new HomeSlideafisa((int)Tools::getValue('delete_id_slide')); $res = $slide->delete(); $this->clearCache(); if (!$res) $this->_html .= $this->displayError('Could not delete.'); else Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules', true).'&conf=1&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name); } /* Display errors if needed */ if (count($errors)) $this->_html .= $this->displayError(implode('<br />', $errors)); elseif (Tools::isSubmit('submitSlide') && Tools::getValue('id_slide')) Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules', true).'&conf=4&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name); elseif (Tools::isSubmit('submitSlide')) Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules', true).'&conf=3&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name); } private function _prepareHook() { if (!$this->isCached('homesliderafisa.tpl', $this->getCacheId())) { $slides = $this->getSlides(true); if (is_array($slides)) foreach ($slides as &$slide) { $slide['sizes'] = @getimagesize((dirname(__FILE__).DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.$slide['image'])); if (isset($slide['sizes'][3]) && $slide['sizes'][3]) $slide['size'] = $slide['sizes'][3]; $slide2['sizes'] = @getimagesize((dirname(__FILE__).DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.$slide2['image2'])); if (isset($slide2['sizes'][3]) && $slide2['sizes'][3]) $slide2['size'] = $slide2['sizes'][3]; } if (!$slides) return false; $this->smarty->assign(array('homesliderafisa_slides' => $slides)); } return true; } public function hookdisplayHeader($params) { if (!isset($this->context->controller->php_self) || $this->context->controller->php_self != 'index') return; $this->context->controller->addCSS($this->_path.'homesliderafisa.css'); $this->context->controller->addJS($this->_path.'js/homesliderafisa.js'); $this->context->controller->addJqueryPlugin(array('bxslider')); $slider = array( 'width' => Configuration::get('HOMESLIDER_WIDTH'), 'speed' => Configuration::get('HOMESLIDER_SPEED'), 'pause' => Configuration::get('HOMESLIDER_PAUSE'), 'loop' => (bool)Configuration::get('HOMESLIDER_LOOP'), ); $this->smarty->assign('homesliderafisa', $slider); return $this->display(__FILE__, 'header.tpl'); } public function hookdisplayHomeAfisa($params) { return $this->hookdisplayHeader($params); } public function hookdisplayTop($params) { return $this->hookdisplayTopColumn($params); } public function hookdisplayTopColumn($params) { if (!isset($this->context->controller->php_self) || $this->context->controller->php_self != 'index') return; if (!$this->_prepareHook()) return false; return $this->display(__FILE__, 'homesliderafisa.tpl', $this->getCacheId()); } public function hookDisplayHome() { if (!$this->_prepareHook()) return false; return $this->display(__FILE__, 'homesliderafisa.tpl', $this->getCacheId()); } public function clearCache() { $this->_clearCache('homesliderafisa.tpl'); } public function hookActionShopDataDuplication($params) { Db::getInstance()->execute(' INSERT IGNORE INTO '._DB_PREFIX_.'homesliderafisa (id_homesliderafisa_slides, id_shop) SELECT id_homesliderafisa_slides, '.(int)$params['new_id_shop'].' FROM '._DB_PREFIX_.'homesliderafisa WHERE id_shop = '.(int)$params['old_id_shop'] ); $this->clearCache(); } public function headerHTML() { if (Tools::getValue('controller') != 'AdminModules' && Tools::getValue('configure') != $this->name) return; $this->context->controller->addJqueryUI('ui.sortable'); /* Style & js for fieldset 'slides configuration' */ $html = '<script type="text/javascript"> $(function() { var $mySlides = $("#slides"); $mySlides.sortable({ opacity: 0.6, cursor: "move", update: function() { var order = $(this).sortable("serialize") + "&action=updateSlidesPosition"; $.post("'.$this->context->shop->physical_uri.$this->context->shop->virtual_uri.'modules/'.$this->name.'/ajax_'.$this->name.'.php?secure_key='.$this->secure_key.'", order); } }); $mySlides.hover(function() { $(this).css("cursor","move"); }, function() { $(this).css("cursor","auto"); }); }); </script>'; return $html; } public function getNextPosition() { $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT MAX(hss.`position`) AS `next_position` FROM `'._DB_PREFIX_.'homesliderafisa_slides` hss, `'._DB_PREFIX_.'homesliderafisa` hs WHERE hss.`id_homesliderafisa_slides` = hs.`id_homesliderafisa_slides` AND hs.`id_shop` = '.(int)$this->context->shop->id ); return (++$row['next_position']); } public function getSlides($active = null) { $this->context = Context::getContext(); $id_shop = $this->context->shop->id; $id_lang = $this->context->language->id; return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT hs.`id_homesliderafisa_slides` as id_slide, hssl.`image`, hssl.`image2`, hss.`position`, hss.`active`, hssl.`title`, hssl.`url`, hssl.`legend`, hssl.`description`, hssl.`image`, hssl.`image2` FROM '._DB_PREFIX_.'homesliderafisa hs LEFT JOIN '._DB_PREFIX_.'homesliderafisa_slides hss ON (hs.id_homesliderafisa_slides = hss.id_homesliderafisa_slides) LEFT JOIN '._DB_PREFIX_.'homesliderafisa_slides_lang hssl ON (hss.id_homesliderafisa_slides = hssl.id_homesliderafisa_slides) WHERE id_shop = '.(int)$id_shop.' AND hssl.id_lang = '.(int)$id_lang. ($active ? ' AND hss.`active` = 1' : ' ').' ORDER BY hss.position' ); } public function getAllImagesBySlidesId($id_slides, $active = null, $id_shop = null) { $this->context = Context::getContext(); $images = array(); if (!isset($id_shop)) $id_shop = $this->context->shop->id; $results = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT hssl.`image`, hssl.`image2`, hssl.`id_lang` FROM '._DB_PREFIX_.'homesliderafisa hs LEFT JOIN '._DB_PREFIX_.'homesliderafisa_slides hss ON (hs.id_homesliderafisa_slides = hss.id_homesliderafisa_slides) LEFT JOIN '._DB_PREFIX_.'homesliderafisa_slides_lang hssl ON (hss.id_homesliderafisa_slides = hssl.id_homesliderafisa_slides) WHERE hs.`id_homesliderafisa_slides` = '.(int)$id_slides.' AND hs.`id_shop` = '.(int)$id_shop. ($active ? ' AND hss.`active` = 1' : ' ') ); foreach ($results as $result) $images[$result['id_lang']] = $result['image']; $images2[$result['id_lang']] = $result2['image']; return $images; } public function displayStatus($id_slide, $active) { $title = ((int)$active == 0 ? $this->l('Disabled') : $this->l('Enabled')); $icon = ((int)$active == 0 ? 'icon-remove' : 'icon-check'); $class = ((int)$active == 0 ? 'btn-danger' : 'btn-success'); $html = '<a class="btn '.$class.'" href="'.AdminController::$currentIndex. '&configure='.$this->name.' &token='.Tools::getAdminTokenLite('AdminModules').' &changeStatus&id_slide='.(int)$id_slide.'" title="'.$title.'"><i class="'.$icon.'"></i> '.$title.'</a>'; return $html; } public function slideExists($id_slide) { $req = 'SELECT hs.`id_homesliderafisa_slides` as id_slide FROM `'._DB_PREFIX_.'homesliderafisa` hs WHERE hs.`id_homesliderafisa_slides` = '.(int)$id_slide; $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($req); return ($row); } public function renderList() { $slides = $this->getSlides(); foreach ($slides as $key => $slide) $slides[$key]['status'] = $this->displayStatus($slide['id_slide'], $slide['active']); $this->context->smarty->assign( array( 'link' => $this->context->link, 'slides' => $slides, 'image_baseurl' => $this->_path.'images/', 'image2_baseurl' => $this->_path.'images/' ) ); return $this->display(__FILE__, 'list.tpl'); } public function renderAddForm() { $fields_form = array( 'form' => array( 'legend' => array( 'title' => $this->l('Slide information'), 'icon' => 'icon-cogs' ), 'input' => array( array( 'type' => 'file_lang', 'label' => $this->l('Select a file'), 'name' => 'image', 'lang' => true, 'desc' => $this->l(sprintf('Maximum image size: %s.', ini_get('upload_max_filesize'))) ), array( 'type' => 'file_lang', 'label' => $this->l('Select a file'), 'name' => 'image2', 'lang' => true, 'desc' => $this->l(sprintf('Maximum image size: %s.', ini_get('upload_max_filesize'))) ), array( 'type' => 'text', 'label' => $this->l('Slide title'), 'name' => 'title', 'lang' => true, ), array( 'type' => 'text', 'label' => $this->l('Target URL'), 'name' => 'url', 'lang' => true, ), array( 'type' => 'text', 'label' => $this->l('Caption'), 'name' => 'legend', 'lang' => true, ), array( 'type' => 'textarea', 'label' => $this->l('Description'), 'name' => 'description', 'autoload_rte' => true, 'lang' => true, ), array( 'type' => 'switch', 'label' => $this->l('Enabled'), 'name' => 'active_slide', 'is_bool' => true, 'values' => array( array( 'id' => 'active_on', 'value' => 1, 'label' => $this->l('Yes') ), array( 'id' => 'active_off', 'value' => 0, 'label' => $this->l('No') ) ), ), ), 'submit' => array( 'title' => $this->l('Save'), ) ), ); if (Tools::isSubmit('id_slide') && $this->slideExists((int)Tools::getValue('id_slide'))) { $slide = new HomeSlideafisa((int)Tools::getValue('id_slide')); $fields_form['form']['input'][] = array('type' => 'hidden', 'name' => 'id_slide'); $fields_form['form']['images'] = $slide->image; $has_picture = true; foreach (Language::getLanguages(false) as $lang) if (!isset($slide->image[$lang['id_lang']])) $has_picture &= false; if ($has_picture) $fields_form['form']['input'][] = array('type' => 'hidden', 'name' => 'has_picture'); } $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->table; $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); $helper->default_form_language = $lang->id; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; $this->fields_form = array(); $helper->module = $this; $helper->identifier = $this->identifier; $helper->submit_action = 'submitSlide'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $language = new Language((int)Configuration::get('PS_LANG_DEFAULT')); $helper->tpl_vars = array( 'base_url' => $this->context->shop->getBaseURL(), 'language' => array( 'id_lang' => $language->id, 'iso_code' => $language->iso_code ), 'fields_value' => $this->getAddFieldsValues(), 'languages' => $this->context->controller->getLanguages(), 'id_language' => $this->context->language->id, 'image_baseurl' => $this->_path.'images/' ); $helper->override_folder = '/'; return $helper->generateForm(array($fields_form)); } public function renderForm() { $fields_form = array( 'form' => array( 'legend' => array( 'title' => $this->l('Settings'), 'icon' => 'icon-cogs' ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Maximum image width'), 'name' => 'HOMESLIDER_WIDTH', 'suffix' => 'pixels' ), array( 'type' => 'text', 'label' => $this->l('Speed'), 'name' => 'HOMESLIDER_SPEED', 'suffix' => 'milliseconds', 'desc' => $this->l('The duration of the transition between two slides.') ), array( 'type' => 'text', 'label' => $this->l('Pause'), 'name' => 'HOMESLIDER_PAUSE', 'suffix' => 'milliseconds', 'desc' => $this->l('The delay between two slides.') ), array( 'type' => 'switch', 'label' => $this->l('Auto play'), 'name' => 'HOMESLIDER_LOOP', 'values' => array( array( 'id' => 'active_on', 'value' => 1, 'label' => $this->l('Enabled') ), array( 'id' => 'active_off', 'value' => 0, 'label' => $this->l('Disabled') ) ), ) ), 'submit' => array( 'title' => $this->l('Save'), ) ), ); $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->table; $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); $helper->default_form_language = $lang->id; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; $this->fields_form = array(); $helper->identifier = $this->identifier; $helper->submit_action = 'submitSlider'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->tpl_vars = array( 'fields_value' => $this->getConfigFieldsValues(), 'languages' => $this->context->controller->getLanguages(), 'id_language' => $this->context->language->id ); return $helper->generateForm(array($fields_form)); } public function getConfigFieldsValues() { return array( 'HOMESLIDER_WIDTH' => Tools::getValue('HOMESLIDER_WIDTH', Configuration::get('HOMESLIDER_WIDTH')), 'HOMESLIDER_SPEED' => Tools::getValue('HOMESLIDER_SPEED', Configuration::get('HOMESLIDER_SPEED')), 'HOMESLIDER_PAUSE' => Tools::getValue('HOMESLIDER_PAUSE', Configuration::get('HOMESLIDER_PAUSE')), 'HOMESLIDER_LOOP' => Tools::getValue('HOMESLIDER_LOOP', Configuration::get('HOMESLIDER_LOOP')), ); } public function getAddFieldsValues() { $fields = array(); if (Tools::isSubmit('id_slide') && $this->slideExists((int)Tools::getValue('id_slide'))) { $slide = new HomeSlideafisa((int)Tools::getValue('id_slide')); $fields['id_slide'] = (int)Tools::getValue('id_slide', $slide->id); } else $slide = new HomeSlideafisa(); $fields['active_slide'] = Tools::getValue('active_slide', $slide->active); $fields['has_picture'] = true; $languages = Language::getLanguages(false); foreach ($languages as $lang) { $fields['image'][$lang['id_lang']] = Tools::getValue('image_'.(int)$lang['id_lang']); $fields['title'][$lang['id_lang']] = Tools::getValue('title_'.(int)$lang['id_lang'], $slide->title[$lang['id_lang']]); $fields['url'][$lang['id_lang']] = Tools::getValue('url_'.(int)$lang['id_lang'], $slide->url[$lang['id_lang']]); $fields['legend'][$lang['id_lang']] = Tools::getValue('legend_'.(int)$lang['id_lang'], $slide->legend[$lang['id_lang']]); $fields['description'][$lang['id_lang']] = Tools::getValue('description_'.(int)$lang['id_lang'], $slide->description[$lang['id_lang']]); } return $fields; } } I think this part is the problem: /* Uploads image2 and sets slide */ $type2 = Tools::strtolower(Tools::substr(strrchr($_FILES['image2_'.$language['id_lang']]['name'], '.'), 1)); $imagesize2 = @getimagesize($_FILES['image2_'.$language['id_lang']]['tmp_name']); if (isset($_FILES['image2_'.$language['id_lang']]) && isset($_FILES['image2_'.$language['id_lang']]['tmp_name']) && !empty($_FILES['image2_'.$language['id_lang']]['tmp_name']) && !empty($imagesize2) && in_array( Tools::strtolower(Tools::substr(strrchr($imagesize2['mime'], '/'), 1)), array( 'jpg', 'gif', 'jpeg', 'png' ) ) && in_array($type2, array('jpg', 'gif', 'jpeg', 'png')) ) { $temp_name2 = tempnam(_PS_TMP_IMG_DIR_, 'PS'); $salt2 = sha1(microtime()); if ($error = ImageManager::validateUpload($_FILES['image2_'.$language['id_lang']])) $errors[] = $error; elseif (!$temp_name2 || !move_uploaded_file($_FILES['image2_'.$language['id_lang']]['tmp_name'], $temp_name2)) return false; elseif (!ImageManager::resize($temp_name2, dirname(__FILE__).'/images/'.$salt2.'_'.$_FILES['image2_'.$language['id_lang']]['name'], null, null, $type2)) $errors[] = $this->displayError($this->l('An error occurred during the image2 upload process.')); if (isset($temp_name2)) @unlink($temp_name2); $slide2->image2[$language['id_lang']] = $salt2.'_'.$_FILES['image2_'.$language['id_lang']]['name']; } elseif (Tools::getValue('image2_old_'.$language['id_lang']) != '') $slide2->image2[$language['id_lang']] = Tools::getValue('image2_old_'.$language['id_lang']); Edited September 15, 2014 by Andron777 (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now