* @copyright 2007-2011 PrestaShop SA * @version Release: $Revision: 7541 $ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ if (!defined('_CAN_LOAD_FILES_')) exit; class Editorial extends Module { /** @var max image size */ protected $maxImageSize = 307200; public function __construct() { $this->name = 'editorial'; $this->tab = 'front_office_features'; $this->version = '1.6'; $this->author = 'PrestaShop'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('Home text editor'); $this->description = $this->l('A text editor module for your homepage.'); $path = dirname(__FILE__); if (strpos(__FILE__, 'Module.php') !== false) $path .= '/../modules/'.$this->name; include_once($path.'/EditorialClass.php'); } public function install() { if (!parent::install() OR !$this->registerHook('home') OR !$this->registerHook('header')) return false; if (!Db::getInstance()->Execute(' CREATE TABLE `'._DB_PREFIX_.'editorial` ( `id_editorial` int(10) unsigned NOT NULL auto_increment, `body_home_logo_link` varchar(255) NOT NULL, PRIMARY KEY (`id_editorial`)) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8')) return false; if (!Db::getInstance()->Execute(' CREATE TABLE `'._DB_PREFIX_.'editorial_lang` ( `id_editorial` int(10) unsigned NOT NULL, `id_lang` int(10) unsigned NOT NULL, `body_title` varchar(255) NOT NULL, `body_subheading` varchar(255) NOT NULL, `body_paragraph` text NOT NULL, `body_logo_subheading` varchar(255) NOT NULL, PRIMARY KEY (`id_editorial`, `id_lang`)) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8')) return false; if (!Db::getInstance()->Execute(' INSERT INTO `'._DB_PREFIX_.'editorial`(`id_editorial`, `body_home_logo_link`) VALUES(1, "http://www.prestashop.com")')) return false; if (!Db::getInstance()->Execute(' INSERT INTO `'._DB_PREFIX_.'editorial_lang`(`id_editorial`, `id_lang`, `body_title`, `body_subheading`, `body_paragraph`, `body_logo_subheading`) VALUES(1, 1, "Lorem ipsum dolor sit amet", "Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua", "<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p>", "Excepteur sint prestashop cupidatat non proident")')) return false; if (!Db::getInstance()->Execute(' INSERT INTO `'._DB_PREFIX_.'editorial_lang`(`id_editorial`, `id_lang`, `body_title`, `body_subheading`, `body_paragraph`, `body_logo_subheading`) VALUES(1, 2, "Lorem ipsum dolor sit amet", "Excepteur sint occaecat cupidatat non proident", "<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p>", "Lorem ipsum presta shop amet")')) return false; return true; } public function uninstall() { if (!parent::uninstall()) return false; return (Db::getInstance()->Execute('DROP TABLE `'._DB_PREFIX_.'editorial`') AND Db::getInstance()->Execute('DROP TABLE `'._DB_PREFIX_.'editorial_lang`')); } public function putContent($xml_data, $key, $field, $forbidden, $section) { foreach ($forbidden AS $line) if ($key == $line) return 0; if (!preg_match('/^'.$section.'_/i', $key)) return 0; $key = preg_replace('/^'.$section.'_/i', '', $key); $field = htmlspecialchars($field); if (!$field) return 0; return ("\n".' <'.$key.'>'.$field.''); } public function getContent() { global $cookie; /* display the module name */ $this->_html = '

'.$this->displayName.'

'; $errors = ''; // Delete logo image if (Tools::isSubmit('deleteImage')) { if (!file_exists(dirname(__FILE__).'/homepage_logo.jpg')) $errors .= $this->displayError($this->l('This action cannot be taken.')); else { unlink(dirname(__FILE__).'/homepage_logo.jpg'); Configuration::updateValue('EDITORIAL_IMAGE_DISABLE', 1); Tools::redirectAdmin('index.php?tab=AdminModules&configure='.$this->name.'&token='.Tools::getAdminToken('AdminModules'.(int)(Tab::getIdFromClassName('AdminModules')).(int)($cookie->id_employee))); } $this->_html .= $errors; } /* update the editorial xml */ if (Tools::isSubmit('submitUpdate')) { // Forbidden key $forbidden = array('submitUpdate'); $editorial = new EditorialClass(1); $editorial->copyFromPost(); $editorial->update(); /* upload the image */ if (isset($_FILES['body_homepage_logo']) AND isset($_FILES['body_homepage_logo']['tmp_name']) AND !empty($_FILES['body_homepage_logo']['tmp_name'])) { Configuration::set('PS_IMAGE_GENERATION_METHOD', 1); if (file_exists(dirname(__FILE__).'/homepage_logo.jpg')) unlink(dirname(__FILE__).'/homepage_logo.jpg'); if ($error = checkImage($_FILES['body_homepage_logo'], $this->maxImageSize)) $errors .= $error; elseif (!$tmpName = tempnam(_PS_TMP_IMG_DIR_, 'PS') OR !move_uploaded_file($_FILES['body_homepage_logo']['tmp_name'], $tmpName)) return false; elseif (!imageResize($tmpName, dirname(__FILE__).'/homepage_logo.jpg')) $errors .= $this->displayError($this->l('An error occurred during the image upload.')); if (isset($tmpName)) unlink($tmpName); } $this->_html .= $errors == '' ? $this->displayConfirmation($this->l('Settings updated successfully')) : $errors; if (file_exists(dirname(__FILE__).'/homepage_logo.jpg')) { list($width, $height, $type, $attr) = getimagesize(dirname(__FILE__).'/homepage_logo.jpg'); Configuration::updateValue('EDITORIAL_IMAGE_WIDTH', (int)round($width)); Configuration::updateValue('EDITORIAL_IMAGE_HEIGHT', (int)round($height)); Configuration::updateValue('EDITORIAL_IMAGE_DISABLE', 0); } } /* display the editorial's form */ $this->_displayForm(); return $this->_html; } private function _displayForm() { global $cookie; /* Languages preliminaries */ $defaultLanguage = (int)(Configuration::get('PS_LANG_DEFAULT')); $languages = Language::getLanguages(false); $iso = Language::getIsoById((int)($cookie->id_lang)); $divLangName = 'title¤subheading¤cpara¤logo_subheading'; $editorial = new EditorialClass(1); // TinyMCE global $cookie; $iso = Language::getIsoById((int)($cookie->id_lang)); $isoTinyMCE = (file_exists(_PS_ROOT_DIR_.'/js/tiny_mce/langs/'.$iso.'.js') ? $iso : 'en'); $ad = dirname($_SERVER["PHP_SELF"]); $this->_html .= ' '; $this->_html .= '
'.$this->displayName.'
'; foreach ($languages as $language) { $this->_html .= '
'; } $this->_html .= $this->displayFlags($languages, $defaultLanguage, $divLangName, 'title', true); $this->_html .= '

'.$this->l('Appears along top of homepage').'

'; foreach ($languages as $language) { $this->_html .= '
'; } $this->_html .= $this->displayFlags($languages, $defaultLanguage, $divLangName, 'subheading', true); $this->_html .= '
'; foreach ($languages as $language) { $this->_html .= '
'; } $this->_html .= $this->displayFlags($languages, $defaultLanguage, $divLangName, 'cpara', true); $this->_html .= '

'.$this->l('Text of your choice; for example, explain your mission, highlight a new product, or describe a recent event.').'

'; if (file_exists(dirname(__FILE__).'/homepage_logo.jpg') && !Configuration::get('EDITORIAL_IMAGE_DISABLE')) $this->_html .= '

'.$this->l('Filesize').' '.(filesize(dirname(__FILE__).'/homepage_logo.jpg') / 1000).'kb

'.$this->l('Delete').' '.$this->l('Delete').'
'; $this->_html .= '

'.$this->l('Will appear next to the Introductory Text above').'

'.$this->l('Link used on the 2nd logo').'

'; foreach ($languages as $language) { $this->_html .= '
'; } $this->_html .= $this->displayFlags($languages, $defaultLanguage, $divLangName, 'logo_subheading', true); $this->_html .= '
'; } public function hookHome($params) { global $cookie, $smarty; $editorial = new EditorialClass(1, (int)$cookie->id_lang); $smarty->assign(array( 'editorial' => $editorial, 'default_lang' => (int)$cookie->id_lang, 'image_width' => Configuration::get('EDITORIAL_IMAGE_WIDTH'), 'image_height' => Configuration::get('EDITORIAL_IMAGE_HEIGHT'), 'id_lang' => $cookie->id_lang, 'homepage_logo' => !Configuration::get('EDITORIAL_IMAGE_DISABLE') && file_exists('modules/editorial/homepage_logo.jpg'), 'image_path' => $this->_path.'homepage_logo.jpg' )); return $this->display(__FILE__, 'editorial.tpl'); } public function hookHeader() { Tools::addCSS(($this->_path).'editorial.css', 'all'); } }