KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN UNIVERSITAS SUMATERA UTARA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM Jln. Bioteknologi No.1 Kampus USU Padang Bulan Medan-20155
Telp. (061) 8211050, 8214290, Fax. (061) 8214290
KARTU BIMBINGAN TUGAS AKHIR MAHASISWA
Nama Mahasiswa : VIVI SAUFINA Nomor Induk Mahasiswa : 102406040
Judul Tugas Akhir : Sistem Penjualan Ponsel Berbasis Ecommerce Dosen Pembimbing : Dr. Saib Suwilo, M.Sc
Tanggal Mulai Bimbingan : Tanggal Selesai Bimbingan :
Kartu ini harap dikembalikan kejurusan Matematika Bila Bimbingan Mahasiswa telah Selesai.
Diketahui, Disetujui
Ketua Dapartemen Matematika Pembimbing Utama/ Penanggung Jawab
Prof. Dr. Tulus, M.Si Dr. Saib Suwilo, M.Sc 19620901 198803 1 002 19640109 198803 1 004 No
Tanggal Asisten Bimbingan
Pembahasan pada Asistensi Mengenai, pada Bab :
Paraf Dosen
Pembimbing Keterangan 1
SURAT KETERANGAN
Hasil Uji Program Tugas Akhir
Yang bertanda dibawah ini, menerangkan bahwa Mahasiswa Tugas Akhir Program D3 Teknik Informatika :
Nama : VIVI SAUFINA NIM : 102406040
Prog. Studi : D3 Teknik Informatika
Judul TA : Penjualan Ponsel Berbasis Ecommerce
Telah melaksanakan test program Tugas Akhir Mahasiswa diatas pada tanggal ……….
Dengan Hasil : Sukses / Gagal
Demikianlah diterangkan untuk digunakan melengkapi syarat pendaftaran ujian Meja Hijau Tugas Akhir Mahasiswa bersangkutan di Dapartemen Matematika FMIPA USU Medan.
Medan, Mei 2013 Dosen Pembimbing
LAMPIRAN : LISTING PROGRAM
Listing Index.php
<?php /*
* 2007-2011 PrestaShop *
* NOTICE OF LICENSE *
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER *
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 7233 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../"); exit;
Listing CategoryController.php
<?php /*
* 2007-2011 PrestaShop *
* NOTICE OF LICENSE *
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER *
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 9643 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
{
public $php_self = 'category.php';
protected $category;
public function setMedia() {
parent::setMedia(); Tools::addCSS(array(
_PS_CSS_DIR_.'jquery.cluetip.css' => 'all',
_THEME_CSS_DIR_.'scenes.css' => 'all', _THEME_CSS_DIR_.'category.css' => 'all', _THEME_CSS_DIR_.'product_list.css' => 'all'));
if
(Configuration::get('PS_COMPARATOR_MAX_ITEM') > 0) Tools::addJS(_THEME_JS_DIR_.'products-comparison.js');
}
public function displayHeader() {
parent::displayHeader(); $this->productSort(); }
public function canonicalRedirection() {
// Automatically redirect to the canonical URL if the current in is the right one
// $_SERVER['HTTP_HOST'] must be replaced by the real canonical domain
if (Validate::isLoadedObject($this->category) && Configuration::get('PS_CANONICAL_REDIRECT') && strtoupper($_SERVER['REQUEST_METHOD']) == 'GET' && !Tools::getValue('noredirect'))
{
$currentURL = preg_replace('/[?&].*$/', '', self::$link->getCategoryLink($this->category));
if
(!preg_match('/^'.Tools::pRegexp($currentURL, '/').'([&?].*)?$/',
Tools::getProtocol().$_SERVER['HTTP_HOST'].$_SERVER['REQU EST_URI']))
{
header('HTTP/1.0 301 Moved');
die('[Debug] This page has moved<br />Please use the following URL instead: <a href="'.$currentURL.'">'.$currentURL.'</a>');
Tools::redirectLink($currentURL); }
} }
public function preProcess() {
if ($id_category =
(int)Tools::getValue('id_category'))
$this->category = new Category($id_category, self::$cookie->id_lang);
if (!Validate::isLoadedObject($this->category)) {
header('HTTP/1.1 404 Not Found'); header('Status: 404 Not Found'); }
else
$this->canonicalRedirection();
parent::preProcess(); }
public function process() {
parent::process();
if (!($id_category = (int)Tools::getValue('id_category')) OR !Validate::isUnsignedId($id_category))
$this->errors[] = Tools::displayError('Missing category ID');
else {
if (!Validate::isLoadedObject($this->category))
$this->errors[] = Tools::displayError('Category does not exist');
elseif (!$this->category->checkAccess((int)(self::$cookie->id_customer)))
$this->errors[] = Tools::displayError('You do not have access to this category.');
elseif (!$this->category->active)
self::$smarty->assign('category', $this->category);
$rewrited_url = self::$link->getCategoryLink((int)$this->category->id, $this->category->link_rewrite);
/* Scenes (could be externalised to another controler if you need them */
self::$smarty->assign('scenes', Scene::getScenes((int)($this->category->id),
(int)(self::$cookie->id_lang), true, false));
/* Scenes images formats */
if ($sceneImageTypes = ImageType::getImagesTypes('scenes'))
{
foreach ($sceneImageTypes AS $sceneImageType)
{
if ($sceneImageType['name'] == 'thumb_scene')
$thumbSceneImageType = $sceneImageType;
elseif
($sceneImageType['name'] == 'large_scene')
$largeSceneImageType = $sceneImageType;
}
self::$smarty->assign('thumbSceneImageType',
isset($thumbSceneImageType) ? $thumbSceneImageType : NULL);
self::$smarty->assign('largeSceneImageType',
isset($largeSceneImageType) ? $largeSceneImageType : NULL);
}
$this->category->description = nl2br2($this->category->description);
$subCategories = $this->category->getSubCategories((int)self::$cookie->id_lang);
self::$smarty->assign('category', $this->category);
if (isset($subCategories) AND !empty($subCategories) AND $subCategories)
{
self::$smarty->assign('subcategories', $subCategories);
'subcategories_nb_total' => sizeof($subCategories),
'subcategories_nb_half' => ceil(sizeof($subCategories) / 2)));
}
if ($this->category->id != 1) $this->productListAssign();
self::$smarty->assign(array(
'products' => (isset($this->cat_products) AND $this->cat_products) ? $this->cat_products : NULL,
'id_category' => (int)($this->category->id),
'id_category_parent' => (int)($this->category->id_parent),
'return_category_name' => Tools::safeOutput($this->category->name),
'path' =>
Tools::getPath((int)($this->category->id)),
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
'categorySize' => Image::getSize('category'),
'mediumSize' => Image::getSize('medium'),
'thumbSceneSize' => Image::getSize('thumb_scene'),
'homeSize' => Image::getSize('home')
));
if (isset(self::$cookie->id_compare))
self::$smarty->assign('compareProducts',
CompareProduct::getCompareProducts((int)self::$cookie->id_compare));
} }
self::$smarty->assign(array(
'allow_oosp' => (int)(Configuration::get('PS_ORDER_OUT_OF_STOCK')),
'comparator_max_item' => (int)(Configuration::get('PS_COMPARATOR_MAX_ITEM')),
'suppliers' => Supplier::getSuppliers() ));
}
{
$hookExecuted = false;
Module::hookExec('productListAssign',
array('nbProducts' => &$this->nbProducts, 'catProducts' => &$this->cat_products, 'hookExecuted' => &$hookExecuted));
if(!$hookExecuted) // The hook was not executed, standard working
{
self::$smarty->assign('categoryNameComplement', '');
$this->nbProducts = >category->getProducts(NULL, NULL, NULL, >orderBy, $this->orderWay, true);
$this->pagination((int)$this->nbProducts); // Pagination must be call after "getProducts"
$this->cat_products = $this->category->getProducts((int)(self::$cookie->id_lang), (int)($this->p), (int)($this->n), $this->orderBy, $this->orderWay);
}
else // Hook executed, use the override
$this->pagination((int)$this->nbProducts); // Pagination must be call after "getProducts"
self::$smarty->assign('nb_products', (int)$this->nbProducts);
}
public function displayContent() {
parent::displayContent();
self::$smarty->display(_PS_THEME_DIR_.'category.tpl'); }
}
Listing ProductController.php
<?php /*
* 2007-2011 PrestaShop *
* NOTICE OF LICENSE *
* This source file is subject to the Open Software License (OSL 3.0)
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER *
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 10539 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class ProductControllerCore extends FrontController {
protected $product;
public $php_self = 'product.php'; protected $canonicalURL;
public function setMedia() {
parent::setMedia();
Tools::addCSS(_THEME_CSS_DIR_.'product.css'); Tools::addCSS(_PS_CSS_DIR_.'jquery.fancybox-1.3.4.css', 'screen');
Tools::addJS(array(
_PS_JS_DIR_.'jquery/jquery.fancybox-1.3.4.js',
_PS_JS_DIR_.'jquery/jquery.idTabs.modified.js', _PS_JS_DIR_.'jquery/jquery.scrollTo-1.4.2-min.js',
_THEME_JS_DIR_.'tools.js', _THEME_JS_DIR_.'product.js'));
if (Configuration::get('PS_DISPLAY_JQZOOM') == 1)
{
Tools::addCSS(_PS_CSS_DIR_.'jqzoom.css', 'screen');
Tools::addJS(_PS_JS_DIR_.'jquery/jquery.jqzoom.js'); }
}
public function canonicalRedirection() {
// Automatically redirect to the canonical URL if the current in is the right one
// $_SERVER['HTTP_HOST'] must be replaced by the real canonical domain
if (Validate::isLoadedObject($this->product) && strtoupper($_SERVER['REQUEST_METHOD']) == 'GET')
{
$canonicalURL = self::$link->getProductLink($this->product);
if
(!preg_match('/^'.Tools::pRegexp($canonicalURL, '/').'([&?].*)?$/',
Tools::getProtocol().$_SERVER['HTTP_HOST'].$_SERVER['REQU EST_URI']))
{
header('HTTP/1.0 301 Moved');
if (defined('_PS_MODE_DEV_') AND _PS_MODE_DEV_)
die('[Debug] This page has moved<br />Please use the following URL instead: <a href="'.$canonicalURL.'">'.$canonicalURL.'</a>');
Tools::redirectLink($canonicalURL); }
} }
public function preProcess() {
if ($id_product =
(int)Tools::getValue('id_product'))
$this->product = new Product($id_product, true, self::$cookie->id_lang);
header('HTTP/1.1 404 Not Found'); header('Status: 404 Not Found'); }
else
$this->canonicalRedirection();
parent::preProcess(); }
public function process() {
global $cart, $currency; parent::process();
if (!Validate::isLoadedObject($this->product)) $this->errors[] = Tools::displayError('Product not found');
else {
if ((!$this->product->active AND (Tools::getValue('adtoken') != Tools::encrypt('PreviewProduct'.$this->product->id))
||
!file_exists(dirname(__FILE__).'/../'.Tools::getValue('ad ').'/ajax.php')))
{
header('HTTP/1.1 404 page not found');
$this->errors[] = Tools::displayError('Product is no longer available.');
}
elseif (!$this->product->checkAccess((int)self::$cookie->id_customer))
$this->errors[] = Tools::displayError('You do not have access to this product.');
else {
self::$smarty->assign('virtual', ProductDownload::getIdFromIdProduct((int)$this->product->id));
if (!$this->product->active)
self::$smarty->assign('adminActionDisplay', true);
/* Product pictures management */ require_once('images.inc.php');
{
self::$smarty->assign('customizationFormTarget',
Tools::safeOutput(urldecode($_SERVER['REQUEST_URI'])));
if
(Tools::isSubmit('submitCustomizedDatas')) {
$this->pictureUpload($this->product, $cart);
$this->textRecord($this->product, $cart);
$this->formTargetFormat(); }
elseif
(isset($_GET['deletePicture']) AND !$cart->deletePictureToProduct((int)($this->product->id),
(int)(Tools::getValue('deletePicture'))))
$this->errors[] = Tools::displayError('An error occurred while deleting the selected picture');
$files = self::$cookie->getFamily('pictures_'.(int)($this->product->id));
$textFields = self::$cookie->getFamily('textFields_'.(int)($this->product->id));
foreach ($textFields as $key => $textField)
$textFields[$key] = str_replace('<br />', "\n", $textField);
self::$smarty->assign(array( 'pictures' => $files,
'textFields' => $textFields));
}
/* Features / Values */
$features = $this->product->getFrontFeatures((int)self::$cookie->id_lang);
$attachments = ($this->product->cache_has_attachments ? $this->product->getAttachments((int)self::$cookie->id_lang) : array());
/* Category */ $category = false;
if (isset($_SERVER['HTTP_REFERER']) AND preg_match('!^(.*)\/([0-9]+)\-(.*[^\.])|(.*)id_category=([0-9]+)(.*)$!',
{
if (isset($regs[2]) AND is_numeric($regs[2]))
{
if
(Product::idIsOnCategoryId((int)($this->product->id), array('0' => array('id_category' => (int)($regs[2])))))
$category = new Category((int)($regs[2]), (int)(self::$cookie->id_lang));
}
elseif (isset($regs[5]) AND is_numeric($regs[5]))
{
if
(Product::idIsOnCategoryId((int)($this->product->id), array('0' => array('id_category' => (int)($regs[5])))))
$category = new Category((int)($regs[5]), (int)(self::$cookie->id_lang));
} }
if (!$category)
$category = new Category($this->product->id_category_default, (int)(self::$cookie->id_lang));
if (isset($category) AND Validate::isLoadedObject($category))
{
self::$smarty->assign(array(
'path' => Tools::getPath((int)$category->id, $this->product->name, true),
'category' => $category, 'subCategories' => $category->getSubCategories((int)self::$cookie->id_lang, true),
'id_category_current' => (int)$category->id,
'id_category_parent' => (int)$category->id_parent,
'return_category_name' => Tools::safeOutput($category->name)
)); }
else
self::$smarty->assign('return_link', (isset($category->id) AND $category->id) ?
Tools::safeOutput(self::$link->getCategoryLink($category)) : 'javascript: history.back();');
if (Pack::isPack((int)$this->product->id) AND !Pack::isInStock((int)$this->product-(Pack::isPack((int)$this->product->id))
$this->product->quantity = 0;
$id_customer = (isset(self::$cookie->id_customer) AND self::$cookie->id_customer) ? (int)(self::$cookie->id_customer) : 0;
$id_group = $id_customer ? (int)(Customer::getDefaultGroupId($id_customer)) : _PS_DEFAULT_CUSTOMER_GROUP_;
$id_country = (int)($id_customer ? Customer::getCurrentCountry($id_customer) : Configuration::get('PS_COUNTRY_DEFAULT'));
$group_reduction = GroupReduction::getValueForProduct($this->product->id, $id_group);
if ($group_reduction == 0)
$group_reduction = Group::getReduction((int)self::$cookie->id_customer) / 100;
// Tax
$tax =
(float)(Tax::getProductTaxRate((int)($this->product->id), $cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}));
self::$smarty->assign('tax_rate', $tax);
$productPriceWithTax = Product::getPriceStatic($this->product->id, true, NULL, 6);
if (Product::$_taxCalculationMethod == PS_TAX_INC)
$productPriceWithTax = Tools::ps_round($productPriceWithTax, 2);
$productPriceWithoutEcoTax = (float)($productPriceWithTax - $this->product->ecotax);
$ecotax_rate = (float)
Tax::getProductEcotaxRate($cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')});
if (Product::$_taxCalculationMethod == PS_TAX_INC && (int)Configuration::get('PS_TAX'))
$ecotaxTaxAmount = Tools::ps_round($ecotaxTaxAmount * (1 + $ecotax_rate / 100), 2);
self::$smarty->assign(array(
'quantity_discounts' => $this->formatQuantityDiscounts(SpecificPrice::getQuantityDiscou nts((int)$this->product->id, (int)Shop::getCurrentShop(), (int)self::$cookie->id_currency, $id_country, $id_group), $this->product->getPrice(Product::$_taxCalculationMethod == PS_TAX_INC, false), (float)$tax),
'product' => $this->product,
'ecotax_tax_inc' => $ecotaxTaxAmount,
'ecotax_tax_exc' => Tools::ps_round($this->product->ecotax, 2),
'ecotaxTax_rate' => $ecotax_rate,
'homeSize' => Image::getSize('home'),
'product_manufacturer' => new Manufacturer((int)$this->product->id_manufacturer,
self::$cookie->id_lang),
'token' => Tools::getToken(false),
'productPriceWithoutEcoTax' => (float)($productPriceWithoutEcoTax),
'features' => $features,
'attachments' => $attachments, 'allow_oosp' => $this->product-
>isAvailableWhenOutOfStock((int)($this->product->out_of_stock)),
'last_qties' => (int)Configuration::get('PS_LAST_QTIES'),
'group_reduction' => (1 - $group_reduction),
'col_img_dir' => _PS_COL_IMG_DIR_,
));
self::$smarty->assign(array(
'HOOK_EXTRA_LEFT' => Module::hookExec('extraLeft'),
'HOOK_EXTRA_RIGHT' => Module::hookExec('extraRight'),
'HOOK_PRODUCT_OOS' => Hook::productOutOfStock($this->product),
'HOOK_PRODUCT_ACTIONS' => Module::hookExec('productActions'),
'HOOK_PRODUCT_TAB' => Module::hookExec('productTab'),
'HOOK_PRODUCT_TAB_CONTENT' => Module::hookExec('productTabContent')
));
$images = $this->product->getImages((int)self::$cookie->id_lang);
$productImages = array();
foreach ($images AS $k => $image) {
if ($image['cover']) {
self::$smarty->assign('mainImage', $images[0]);
$cover = $image;
$cover['id_image'] = (Configuration::get('PS_LEGACY_IMAGES') ? ($this->product->id.'-'.$image['id_image']) : $image['id_image']);
$cover['id_image_only'] = (int)($image['id_image']);
}
$productImages[(int)$image['id_image']] = $image; }
if (!isset($cover))
$cover = array('id_image' => Language::getIsoById(self::$cookie->id_lang).'-default', 'legend' => 'No picture', 'title' => 'No picture');
$size = Image::getSize('large'); self::$smarty->assign(array(
'cover' => $cover,
'imgWidth' => (int)($size['width']),
'mediumSize' => Image::getSize('medium'),
'largeSize' => Image::getSize('large'),
'accessories' => $this->product->getAccessories((int)self::$cookie->id_lang)
));
if (count($productImages))
self::$smarty->assign('images', $productImages);
$attributesGroups = $this->product->getAttributesGroups((int)(self::$cookie->id_lang)); // @todo (RM) should only get groups and not all declination ?
if (is_array($attributesGroups) AND $attributesGroups)
{
$groups = array();
$combinationImages = $this-
>product->getCombinationImages((int)(self::$cookie->id_lang));
foreach ($attributesGroups AS $k => $row)
{
/* Color management */ if
(((isset($row['attribute_color']) AND $row['attribute_color']) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg' ))) AND $row['id_attribute_group'] == $this->product->id_color_default)
{
$colors[$row['id_attribute']]['value'] = $row['attribute_color'];
$colors[$row['id_attribute']]['name'] = $row['attribute_name'];
if
(!isset($colors[$row['id_attribute']]['attributes_quantit y']))
$colors[$row['id_attribute']]['attributes_quantity'] = 0;
$colors[$row['id_attribute']]['attributes_quantity'] += (int)($row['quantity']);
}
if
(!isset($groups[$row['id_attribute_group']])) {
$groups[$row['id_attribute_group']] = array( 'name' => $row['public_group_name'],
'is_color_group' => $row['is_color_group'],
); }
$groups[$row['id_attribute_group']]['attributes'][$r ow['id_attribute']] = $row['attribute_name'];
if ($row['default_on'] && $groups[$row['id_attribute_group']]['default'] == -1)
$groups[$row['id_attribute_group']]['default'] = (int)($row['id_attribute']);
if
(!isset($groups[$row['id_attribute_group']]['attributes_q uantity'][$row['id_attribute']]))
$groups[$row['id_attribute_group']]['attributes_quan tity'][$row['id_attribute']] = 0;
$groups[$row['id_attribute_group']]['attributes_quan tity'][$row['id_attribute']] += (int)($row['quantity']);
$combinations[$row['id_product_attribute']]['attribu tes_values'][$row['id_attribute_group']] = $row['attribute_name'];
$combinations[$row['id_product_attribute']]['attribu tes'][] = (int)($row['id_attribute']);
$combinations[$row['id_product_attribute']]['price'] = (float)($row['price']);
$combinations[$row['id_product_attribute']]['ecotax' ] = (float)($row['ecotax']);
$combinations[$row['id_product_attribute']]['weight' ] = (float)($row['weight']);
$combinations[$row['id_product_attribute']]['quantit y'] = (int)($row['quantity']);
$combinations[$row['id_product_attribute']]['referen ce'] = $row['reference'];
$combinations[$row['id_product_attribute']]['ean13'] = $row['ean13'];
$combinations[$row['id_product_attribute']]['minimal _quantity'] = $row['minimal_quantity'];
$combinations[$row['id_product_attribute']]['id_imag
e'] =
isset($combinationImages[$row['id_product_attribute']][0]
['id_image']) ?
$combinationImages[$row['id_product_attribute']][0]['id_i mage'] : -1;
}
//wash attributes list (if some attributes are unavailables and if allowed to wash it)
if
(!Product::isAvailableWhenOutOfStock($this->product->out_of_stock) && Configuration::get('PS_DISP_UNAVAILABLE_ATTR') == 0)
{
foreach ($groups AS &$group)
foreach
($group['attributes_quantity'] AS $key => &$quantity) if (!$quantity)
unset($group['attributes'][$key]);
foreach ($colors AS $key => $color)
if (!$color['attributes_quantity'])
unset($colors[$key]); }
foreach ($groups AS &$group)
natcasesort($group['attributes']);
foreach ($combinations AS $id_product_attribute => $comb)
{
$attributeList = ''; foreach
($comb['attributes'] AS $id_attribute)
$attributeList .= '\''.(int)($id_attribute).'\',';
$combinations[$id_product_attribute]['list'] = $attributeList;
}
self::$smarty->assign(array( 'groups' => $groups,
'combinaisons' => $combinations, /* Kept for compatibility purpose only */
'combinations' => $combinations,
'colors' => (sizeof($colors) AND $this->product->id_color_default) ? $colors : false,
'combinationImages' => $combinationImages));
}
self::$smarty->assign(array(
'no_tax' => Tax::excludeTaxeOption() OR !Tax::getProductTaxRate((int)$this->product->id, $cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}),
'customizationFields' => ($this->product->customizable ? $this->product->getCustomizationFields((int)self::$cookie->id_lang) : false)
));
// Pack management
self::$smarty->assign('packItems', $this->product->cache_is_pack ? Pack::getItemTable($this->product->id, (int)(self::$cookie->id_lang), true) : array());
self::$smarty->assign('packs', Pack::getPacksTable($this->product->id,
(int)(self::$cookie->id_lang), true, 1)); }
}
self::$smarty->assign(array(
'ENT_NOQUOTES' => ENT_NOQUOTES,
'outOfStockAllowed' => (int)(Configuration::get('PS_ORDER_OUT_OF_STOCK')),
'errors' => $this->errors,
'categories' => Category::getHomeCategories((int)self::$cookie->id_lang),
'tax_enabled' => Configuration::get('PS_TAX'),
'display_qties' => (int)Configuration::get('PS_DISPLAY_QTIES'),
'display_ht' => !Tax::excludeTaxeOption(), 'ecotax' => (!sizeof($this->errors) AND $this->product->ecotax > 0 ? Tools::convertPrice((float)($this->product->ecotax)) : 0),
'currencySign' => $currency->sign,
'currencyRate' => $currency->conversion_rate,
'currencyFormat' => $currency->format, 'currencyBlank' => $currency->blank,
'jqZoomEnabled' => Configuration::get('PS_DISPLAY_JQZOOM')
)); }
public function displayContent() {
parent::displayContent();
self::$smarty->display(_PS_THEME_DIR_.'product.tpl'); }
public function pictureUpload(Product $product, Cart $cart)
{
if (!$fieldIds = $this->product->getCustomizationFieldIds())
return false;
$authorizedFileFields = array(); foreach ($fieldIds AS $fieldId)
if ($fieldId['type'] == _CUSTOMIZE_FILE_)
$authorizedFileFields[(int)($fieldId['id_customizati
on_field'])] =
'file'.(int)($fieldId['id_customization_field']);
$indexes = array_flip($authorizedFileFields); foreach ($_FILES AS $fieldName => $file)
if (in_array($fieldName, $authorizedFileFields) AND isset($file['tmp_name']) AND !empty($file['tmp_name']))
{
$fileName = md5(uniqid(rand(), true));
$this->errors[] = $error;
if ($error OR (!$tmpName = tempnam(_PS_TMP_IMG_DIR_, 'PS') OR !move_uploaded_file($file['tmp_name'], $tmpName)))
return false; /* Original file */
elseif (!imageResize($tmpName, _PS_UPLOAD_DIR_.$fileName))
$this->errors[] = Tools::displayError('An error occurred during the image upload.');
/* A smaller one */
elseif (!imageResize($tmpName, _PS_UPLOAD_DIR_.$fileName.'_small',
(int)(Configuration::get('PS_PRODUCT_PICTURE_WIDTH')), (int)(Configuration::get('PS_PRODUCT_PICTURE_HEIGHT'))))
$this->errors[] = Tools::displayError('An error occurred during the image upload.');
elseif
(!chmod(_PS_UPLOAD_DIR_.$fileName, 0777) OR !chmod(_PS_UPLOAD_DIR_.$fileName.'_small', 0777))
$this->errors[] = Tools::displayError('An error occurred during the image upload.');
else
$cart->addPictureToProduct((int)($this->product->id), $indexes[$fieldName], $fileName);
unlink($tmpName); }
return true; }
public function textRecord(Product $product, Cart $cart)
{
if (!$fieldIds = $this->product->getCustomizationFieldIds())
return false;
$authorizedTextFields = array(); foreach ($fieldIds AS $fieldId)
if ($fieldId['type'] == _CUSTOMIZE_TEXTFIELD_)
$authorizedTextFields[(int)($fieldId['id_customizati
on_field'])] =
foreach ($_POST AS $fieldName => $value)
if (in_array($fieldName, $authorizedTextFields) AND !empty($value))
{
if (!Validate::isMessage($value))
$this->errors[] = Tools::displayError('Invalid message');
else
$cart->addTextFieldToProduct((int)($this->product->id), $indexes[$fieldName], $value);
}
elseif (in_array($fieldName, $authorizedTextFields) AND empty($value))
$cart->deleteTextFieldFromProduct((int)($this->product->id), $indexes[$fieldName]);
}
public function formTargetFormat() {
$customizationFormTarget = Tools::safeOutput(urldecode($_SERVER['REQUEST_URI']));
foreach ($_GET AS $field => $value)
if (strncmp($field, 'group_', 6) == 0)
$customizationFormTarget = preg_replace('/&group_([[:digit:]]+)=([[:digit:]]+)/', '', $customizationFormTarget);
if (isset($_POST['quantityBackup']))
self::$smarty->assign('quantityBackup', (int)($_POST['quantityBackup']));
self::$smarty->assign('customizationFormTarget', $customizationFormTarget);
}
public function
formatQuantityDiscounts($specificPrices, $price, $taxRate)
{
foreach ($specificPrices AS $key => &$row) {
$row['quantity'] = &$row['from_quantity']; // The price may be directly set
if ($row['price'] != 0) {
$cur_price =
$cur_price = Product::$_taxCalculationMethod == PS_TAX_INC ? $cur_price - $row['reduction'] : $cur_price - ($row['reduction'] / (1 + $taxRate / 100));
else
$cur_price = $cur_price * ( 1 - ($row['reduction']));
$row['real_value'] = $price - $cur_price;
} else {
global $cookie;
$id_currency = (int)$cookie->id_currency;
if ($row['reduction_type'] == 'amount')
{
$reduction_amount = $row['reduction']; if (!$row['id_currency'])
$reduction_amount = Tools::convertPrice($reduction_amount, $id_currency);
$row['real_value'] = Product::$_taxCalculationMethod == PS_TAX_INC ? $reduction_amount : $reduction_amount / (1 + $taxRate / 100);
}
else {
$row['real_value'] = $row['reduction'] * 100;
} }
$row['nextQuantity'] = (isset($specificPrices[$key + 1]) ? (int)($specificPrices[$key + 1]['from_quantity']) : -1);
}
return $specificPrices; }
}
Listing AuthController.php
<?php /*
* 2007-2011 PrestaShop *
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER *
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 9643 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class AuthControllerCore extends FrontController {
public $ssl = true;
public $php_self = 'authentication.php';
public function preProcess() {
parent::preProcess();
if (self::$cookie->isLogged() AND !Tools::isSubmit('ajax'))
Tools::redirect('my-account.php');
if (Tools::getValue('create_account')) {
$create_account = 1;
}
if (Tools::isSubmit('SubmitCreate')) {
if (!Validate::isEmail($email = Tools::getValue('email_create')) OR empty($email))
$this->errors[] = Tools::displayError('Invalid e-mail address');
elseif (Customer::customerExists($email)) {
$this->errors[] = Tools::displayError('An account is already registered with this e-mail, please fill in the password or request a new one.');
$_POST['email'] = $_POST['email_create'];
unset($_POST['email_create']); }
else {
$create_account = 1;
self::$smarty->assign('email_create', Tools::safeOutput($email));
$_POST['email'] = $email;
} }
if (Tools::isSubmit('submitAccount') OR Tools::isSubmit('submitGuestAccount'))
{
$create_account = 1;
if (Tools::isSubmit('submitAccount'))
self::$smarty->assign('email_create', 1);
/* New Guest customer */
if (!Tools::getValue('is_new_customer', 1) AND !Configuration::get('PS_GUEST_CHECKOUT_ENABLED'))
$this->errors[] = Tools::displayError('You cannot create a guest account.');
if (!Tools::getValue('is_new_customer', 1))
$_POST['passwd'] = md5(time()._COOKIE_KEY_);
if (isset($_POST['guest_email']) AND $_POST['guest_email'])
/* Preparing customer */ $customer = new Customer();
$lastnameAddress = $_POST['lastname']; $firstnameAddress = $_POST['firstname']; $_POST['lastname'] = $_POST['customer_lastname'];
$_POST['firstname'] = $_POST['customer_firstname'];
if (!Tools::getValue('phone') AND !Tools::getValue('phone_mobile'))
$this->errors[] = Tools::displayError('You must register at least one phone number');
if (!@checkdate(Tools::getValue('months'), Tools::getValue('days'), Tools::getValue('years')) AND !(Tools::getValue('months') == '' AND Tools::getValue('days') == '' AND Tools::getValue('years') == ''))
$this->errors[] = Tools::displayError('Invalid date of birth');
$customer->birthday = (empty($_POST['years']) ? '' : (int)($_POST['years']).'-'.(int)($_POST['months']).'-'.(int)($_POST['days']));
$this->errors = array_unique(array_merge($this->errors, $customer->validateControler()));
/* Preparing address */ $address = new Address();
$_POST['lastname'] = $lastnameAddress; $_POST['firstname'] = $firstnameAddress; $address->id_customer = 1;
$this->errors = array_unique(array_merge($this->errors, $address->validateControler()));
/* US customer: normalize the address */ if ($address->id_country == Country::getByIso('US'))
{
include_once(_PS_TAASC_PATH_.'AddressStandardization Solution.php');
$normalize = new AddressStandardizationSolution;
$address->address1 = $normalize->AddressLineStandardization($address->address1);
}
$zip_code_format = Country::getZipCodeFormat((int)(Tools::getValue('id_count ry')));
if
(Country::getNeedZipCode((int)(Tools::getValue('id_countr y'))))
{
if (($postcode = Tools::getValue('postcode')) AND $zip_code_format)
{
$zip_regexp = '/^'.$zip_code_format.'$/ui';
$zip_regexp = str_replace(' ', '( |)', $zip_regexp);
$zip_regexp = str_replace('-', '(-|)', $zip_regexp);
$zip_regexp = str_replace('N', '[0-9]', $zip_regexp);
$zip_regexp = str_replace('L', '[a-zA-Z]', $zip_regexp);
$zip_regexp = str_replace('C', Country::getIsoById((int)(Tools::getValue('id_country'))) , $zip_regexp);
if (!preg_match($zip_regexp, $postcode))
$this->errors[] = '<strong>'.Tools::displayError('Zip/ Postal code').'</strong> '.Tools::displayError('is invalid.').'<br />'.Tools::displayError('Must be typed as follows:').' '.str_replace('C', Country::getIsoById((int)(Tools::getValue('id_country'))) , str_replace('N', '0', str_replace('L', 'A', $zip_code_format)));
}
elseif ($zip_code_format)
$this->errors[] = '<strong>'.Tools::displayError('Zip/ Postal code').'</strong> '.Tools::displayError('is required.');
elseif ($postcode AND !preg_match('/^[0-9a-zA-Z -]{4,9}$/ui', $postcode))
$this->errors[] = '<strong>'.Tools::displayError('Zip/ Postal code').'</strong> '.Tools::displayError('is invalid.');
} if
$this->errors[] = Tools::displayError('Identification number is incorrect or has already been used.');
elseif
(!Country::isNeedDniByCountryId($address->id_country)) $address->dni = NULL;
if (!sizeof($this->errors)) {
if
(Customer::customerExists(Tools::getValue('email')))
$this->errors[] = Tools::displayError('An account is already registered with this e-mail, please fill in the password or request a new one.');
if (Tools::isSubmit('newsletter')) {
$customer->ip_registration_newsletter = pSQL(Tools::getRemoteAddr());
$customer->newsletter_date_add = pSQL(date('Y-m-d H:i:s'));
}
if (!sizeof($this->errors)) {
if (!$country = new Country($address->id_country,
Configuration::get('PS_LANG_DEFAULT')) OR !Validate::isLoadedObject($country))
die(Tools::displayError()); if ((int)($country->contains_states) AND !(int)($address->id_state))
$this->errors[] = Tools::displayError('This country requires a state selection.');
else {
$customer->active = 1; /* New Guest customer */ if
(Tools::isSubmit('is_new_customer'))
$customer->is_guest = !Tools::getValue('is_new_customer', 1);
else
$customer->is_guest = 0;
$this->errors[] = Tools::displayError('An error occurred while creating your account.');
else {
$address->id_customer = (int)($customer->id);
if (!$address->add()) $this->errors[] = Tools::displayError('An error occurred while creating your address.');
else {
if (!$customer->is_guest)
{
if
(!Mail::Send((int)(self::$cookie->id_lang), 'account', Mail::l('Welcome!'),
array('{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), >email, $customer->firstname.' '.$customer->lastname))
$this->errors[] = Tools::displayError('Cannot send email');
}
self::$smarty->assign('confirmation', 1);
self::$cookie->id_customer = (int)($customer->id);
self::$cookie->customer_lastname = $customer->lastname;
self::$cookie->customer_firstname = $customer->firstname;
self::$cookie->passwd = $customer-self::$cookie->passwd;
self::$cookie->logged = 1;
self::$cookie->email = $customer-self::$cookie->email;
self::$cookie->is_guest = !Tools::getValue('is_new_customer', 1);
/* Update cart address */
self::$cart->id_address_delivery = Address::getFirstCustomerAddressId((int)($customer->id));
self::$cart->id_address_invoice = Address::getFirstCustomerAddressId((int)($customer->id));
self::$cart->update();
Module::hookExec('createAccount', array(
'_POST' => $_POST,
'newCustomer' => $customer
)); if (Tools::isSubmit('ajax'))
{
$return = array(
'hasError' => !empty($this->errors),
'errors' => $this->errors,
'isSaved' => true,
'id_customer' => (int)self::$cookie->id_customer,
'id_address_delivery' => self::$cart->id_address_delivery,
'id_address_invoice' => self::$cart->id_address_invoice,
'token' => Tools::getToken(false)
);
die(Tools::jsonEncode($return)); }
if ($back = Tools::getValue('back'))
Tools::redirect($back);
Tools::redirect('my-account.php'); } }
}
if (sizeof($this->errors)) {
if
(!Tools::getValue('is_new_customer'))
unset($_POST['passwd']); if (Tools::isSubmit('ajax')) {
$return = array(
'hasError' => !empty($this->errors),
'errors' => $this->errors, 'isSaved' => false,
'id_customer' => 0 );
die(Tools::jsonEncode($return)); }
} }
if (Tools::isSubmit('SubmitLogin')) {
Module::hookExec('beforeAuthentication'); $passwd = trim(Tools::getValue('passwd')); $email = trim(Tools::getValue('email')); if (empty($email))
$this->errors[] = Tools::displayError('E-mail address required');
elseif (!Validate::isEmail($email))
$this->errors[] = Tools::displayError('Invalid e-mail address');
elseif (empty($passwd))
$this->errors[] = Tools::displayError('Password is required');
elseif (Tools::strlen($passwd) > 32)
$this->errors[] = Tools::displayError('Password is too long');
elseif (!Validate::isPasswd($passwd))
$this->errors[] = Tools::displayError('Invalid password');
else {
$customer = new Customer();
$authentication = $customer->getByEmail(trim($email), trim($passwd));
if (!$authentication OR !$customer->id)
{
$this->errors[] = Tools::displayError('Authentication failed');
} else {
self::$cookie->id_compare = isset(self::$cookie->id_compare) ? self::$cookie->id_compare:
CompareProduct::getIdCompareByIdCustomer($customer->id); self::$cookie->id_customer = (int)($customer->id);
self::$cookie->customer_lastname = $customer->lastname;
self::$cookie->customer_firstname = $customer->firstname;
self::$cookie->logged = 1;
self::$cookie->is_guest = $customer->isGuest();
self::$cookie->passwd = $customer->passwd;
self::$cookie->email = $customer->email;
if
(Configuration::get('PS_CART_FOLLOWING') AND (empty(self::$cookie->id_cart) OR Cart::getNbProducts(self::$cookie->id_cart) == 0))
self::$cookie->id_cart = (int)(Cart::lastNoneOrderedCart((int)($customer->id)));
/* Update cart address */ self::$cart->id_carrier = 0; self::$cart->id_address_delivery = Address::getFirstCustomerAddressId((int)($customer->id));
self::$cart->id_address_invoice = Address::getFirstCustomerAddressId((int)($customer->id));
// If a logged guest logs in as a customer, the cart secure key was already set and needs to be updated
self::$cart->secure_key = $customer->secure_key;
self::$cart->update();
Module::hookExec('authentication');
if (!Tools::isSubmit('ajax')) {
if ($back = Tools::getValue('back'))
Tools::redirect('my-account.php');
} }
}
if (Tools::isSubmit('ajax')) {
$return = array(
'hasError' => !empty($this->errors),
'errors' => $this->errors,
'token' => Tools::getToken(false)
);
die(Tools::jsonEncode($return)); }
}
if (isset($create_account)) {
/* Select the most appropriate country */ if (isset($_POST['id_country']) AND is_numeric($_POST['id_country']))
$selectedCountry = (int)($_POST['id_country']);
/* FIXME : language iso and country iso are not similar,
* maybe an associative table with country an language can resolve it,
* But for now it's a bug ! * @see : bug #6968
*
@link:http://www.prestashop.com/bug_tracker/view/6968/ elseif
(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$array = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
if
(Validate::isLanguageIsoCode($array[0])) {
$selectedCountry = Country::getByIso($array[0]);
if (!$selectedCountry)
$selectedCountry = (int)(Configuration::get('PS_COUNTRY_DEFAULT'));
} }*/
$selectedCountry = (int)(Configuration::get('PS_COUNTRY_DEFAULT'));
if
(Configuration::get('PS_RESTRICT_DELIVERED_COUNTRIES'))
$countries =
Carrier::getDeliveredCountries((int)self::$cookie->id_lang, true, true);
else
$countries =
Country::getCountries((int)self::$cookie->id_lang, true);
self::$smarty->assign(array( 'countries' => $countries,
'sl_country' => (isset($selectedCountry) ? $selectedCountry : 0),
'vat_management' => Configuration::get('VATNUMBER_MANAGEMENT')
));
/* Call a hook to display more information on form */
self::$smarty->assign(array(
'HOOK_CREATE_ACCOUNT_FORM' => Module::hookExec('createAccountForm'),
'HOOK_CREATE_ACCOUNT_TOP' => Module::hookExec('createAccountTop')
)); }
/* Generate years, months and days */
if (isset($_POST['years']) AND is_numeric($_POST['years']))
$selectedYears = (int)($_POST['years']); $years = Tools::dateYears();
if (isset($_POST['months']) AND is_numeric($_POST['months']))
$selectedMonths = (int)($_POST['months']); $months = Tools::dateMonths();
if (isset($_POST['days']) AND is_numeric($_POST['days']))
$selectedDays = (int)($_POST['days']); $days = Tools::dateDays();
self::$smarty->assign(array( 'years' => $years,
'sl_year' => (isset($selectedYears) ? $selectedYears : 0),
'sl_month' => (isset($selectedMonths) ? $selectedMonths : 0),
'days' => $days,
'sl_day' => (isset($selectedDays) ? $selectedDays : 0)
));
self::$smarty->assign('newsletter', (int)Module::getInstanceByName('blocknewsletter')->active);
}
public function setMedia() {
parent::setMedia();
Tools::addCSS(_THEME_CSS_DIR_.'authentication.css');
Tools::addJS(array(_THEME_JS_DIR_.'tools/statesManag ement.js', _PS_JS_DIR_.'jquery/jquery-typewatch.pack.js'));
}
public function process() {
parent::process();
$back = Tools::getValue('back');
$key =
Tools::safeOutput(Tools::getValue('key')); if (!empty($key))
$back .= (strpos($back, '?') !== false ? '&' : '?').'key='.$key;
if (!empty($back)) {
self::$smarty->assign('back', Tools::safeOutput($back));
if (strpos($back, 'order.php') !== false) {
if
(Configuration::get('PS_RESTRICT_DELIVERED_COUNTRIES'))
$countries =
Carrier::getDeliveredCountries((int)self::$cookie->id_lang, true, true);
else
$countries =
Country::getCountries((int)self::$cookie->id_lang, true);
'PS_GUEST_CHECKOUT_ENABLED' => Configuration::get('PS_GUEST_CHECKOUT_ENABLED'),
'sl_country' => (int)Tools::getValue('id_country',
Configuration::get('PS_COUNTRY_DEFAULT')),
'countries' => $countries ));
} }
}
public function displayContent() {
$this->processAddressFormat();
parent::displayContent();
self::$smarty->display(_PS_THEME_DIR_.'authentication.tpl'); }
protected function processAddressFormat() {
$addressItems = array();
$addressFormat =
AddressFormat::getOrderedAddressFields(Configuration::get ('PS_COUNTRY_DEFAULT'), false, true);
$requireFormFieldsList = AddressFormat::$requireFormFieldsList;
foreach ($addressFormat as $addressline)
foreach (explode(' ', $addressline) as $addressItem)
$addressItems[] = trim($addressItem);
// Add missing require fields for a new user susbscription form
foreach($requireFormFieldsList as $fieldName) if (!in_array($fieldName, $addressItems))
$addressItems[] = trim($fieldName);
foreach (array('inv', 'dlv') as $addressType)
self::$smarty->assign(array($addressType.'_adr_fields' => $addressFormat, $addressType.'_all_fields' => $addressItems));
Listing ManufacturerController.php
<?php /*
* 2007-2011 PrestaShop *
* NOTICE OF LICENSE *
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER *
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 9124 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class ManufacturerControllerCore extends FrontController {
public $php_self = 'manufacturer.php';
protected $manufacturer;
public function setMedia() {
Tools::addCSS(_THEME_CSS_DIR_.'product_list.css'); }
public function canonicalRedirection() {
if (Validate::isLoadedObject($this->manufacturer) && Configuration::get('PS_CANONICAL_REDIRECT') && strtoupper($_SERVER['REQUEST_METHOD']) == 'GET')
{
$canonicalURL = self::$link->getManufacturerLink($this->manufacturer);
if
(!preg_match('/^'.Tools::pRegexp($canonicalURL, '/').'([&?].*)?$/',
Tools::getProtocol().$_SERVER['HTTP_HOST'].$_SERVER['REQU EST_URI']))
{
header('HTTP/1.0 301 Moved');
if (defined('_PS_MODE_DEV_') AND _PS_MODE_DEV_)
die('[Debug] This page has moved<br />Please use the following URL instead: <a href="'.$canonicalURL.'">'.$canonicalURL.'</a>');
Tools::redirectLink($canonicalURL); }
} }
public function preProcess() {
if ($id_manufacturer = (int)Tools::getValue('id_manufacturer'))
{
$this->manufacturer = new Manufacturer($id_manufacturer, self::$cookie->id_lang);
if (!Validate::isLoadedObject($this->manufacturer) OR !$this->manufacturer->active)
{
header('HTTP/1.1 404 Not Found'); header('Status: 404 Not Found');
$this->errors[] = Tools::displayError('Manufacturer does not exist.');
} else
parent::preProcess(); }
public function process() {
if (Validate::isLoadedObject($this->manufacturer) AND $this->manufacturer->active)
{
$nbProducts = $this->manufacturer->getProducts($this->manufacturer->id, NULL, NULL, NULL, $this->orderBy, $this->orderWay, true);
$this->pagination($nbProducts); self::$smarty->assign(array(
'nb_products' => $nbProducts,
'products' => $this->manufacturer->getProducts($this->manufacturer->id, (int)self::$cookie->id_lang, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay),
'path' => ($this->manufacturer->active ? Tools::safeOutput($this->manufacturer->name) : ''),
'manufacturer' => $this->manufacturer));
}
elseif (!Tools::getValue('id_manufacturer')) {
if
(Configuration::get('PS_DISPLAY_SUPPLIERS')) {
$result =
Manufacturer::getManufacturers(true, (int)self::$cookie->id_lang, true);
$nbProducts = count($result); $this->pagination($nbProducts);
$manufacturers = Manufacturer::getManufacturers(true, (int)self::$cookie->id_lang, true, $this->p, $this->n);
foreach ($manufacturers AS &$row)
$row['image'] = (!file_exists(_PS_MANU_IMG_DIR_.'/'.$row['id_manufacturer
'].'-medium.jpg')) ?
Language::getIsoById((int)self::$cookie->id_lang).'-default' : $row['id_manufacturer'];
self::$smarty->assign(array(
'pages_nb' => ceil($nbProducts / (int)$this->n),
'mediumSize' => Image::getSize('medium'),
'manufacturers' => $manufacturers,
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
)); }
else
self::$smarty->assign('nbManufacturers', 0);
} }
public function displayHeader() {
parent::displayHeader(); $this->productSort(); }
public function displayContent() {
parent::displayContent(); if ($this->manufacturer)
self::$smarty->display(_PS_THEME_DIR_.'manufacturer.tpl'); else
self::$smarty->display(_PS_THEME_DIR_.'manufacturer-list.tpl'); }
}
Listing CMSController.php
<?php /*
* 2007-2011 PrestaShop *
* NOTICE OF LICENSE *
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER *
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 10156 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class CmsControllerCore extends FrontController {
public $php_self = 'cms.php';
public $assignCase; public $cms;
public $cms_category;
public function canonicalRedirection() {
// Automatically redirect to the canonical URL if the current in is the right one
// $_SERVER['HTTP_HOST'] must be replaced by the real canonical domain
if (Configuration::get('PS_CANONICAL_REDIRECT') && strtoupper($_SERVER['REQUEST_METHOD']) == 'GET')
{
if (Validate::isLoadedObject($this->cms) AND $canonicalURL = self::$link->getCMSLink($this->cms))
if
(!preg_match('/^'.Tools::pRegexp($canonicalURL, '/').'([&?].*)?$/',
{
header('HTTP/1.0 301 Moved'); if (_PS_MODE_DEV_)
die('[Debug] This page has moved<br />Please use the following URL instead: <a href="'.$canonicalURL.'">'.$canonicalURL.'</a>');
Tools::redirectLink($canonicalURL); }
if (Validate::isLoadedObject($this->cms_category) AND $canonicalURL = self::$link->getCMSCategoryLink($this->cms_category))
if
(!preg_match('/^'.Tools::pRegexp($canonicalURL, '/').'([&?].*)?$/',
Tools::getProtocol().$_SERVER['HTTP_HOST'].$_SERVER['REQU EST_URI']))
{
header('HTTP/1.0 301 Moved'); if (_PS_MODE_DEV_ )
die('[Debug] This page has moved<br />Please use the following URL instead: <a href="'.$canonicalURL.'">'.$canonicalURL.'</a>');
Tools::redirectLink($canonicalURL); }
} }
public function preProcess() {
if ($id_cms = (int)Tools::getValue('id_cms')) $this->cms = new CMS($id_cms, self::$cookie->id_lang);
elseif ($id_cms_category = (int)Tools::getValue('id_cms_category'))
$this->cms_category = new CMSCategory($id_cms_category, self::$cookie->id_lang);
$this->canonicalRedirection();
parent::preProcess();
/* assignCase (1 = CMS page, 2 = CMS category) */
if (Validate::isLoadedObject($this->cms) AND ($this->cms->active OR (Tools::getValue('adtoken') == Tools::encrypt('PreviewCMS'.$this->cms->id) AND file_exists(dirname(__FILE__).'/../'.Tools::getValue('ad' ).'/ajax.php'))))
elseif (Validate::isLoadedObject($this->cms_category))
$this->assignCase = 2; else
Tools::display404Error('404.php');
// too early if in setMedia if ($this->assignCase == 1)
Tools::addJS(_THEME_JS_DIR_.'cms.js'); }
public function setMedia() {
parent::setMedia();
Tools::addCSS(_THEME_CSS_DIR_.'cms.css'); }
public function process() {
parent::process();
$parent_cat = new CMSCategory(1, (int)(self::$cookie->id_lang));
self::$smarty->assign('id_current_lang', self::$cookie->id_lang);
self::$smarty->assign('home_title', $parent_cat->name);
self::$smarty->assign('cgv_id', Configuration::get('PS_CONDITIONS_CMS_ID'));
if ($this->assignCase == 1) {
self::$smarty->assign(array( 'cms' => $this->cms,
'content_only' => (int)(Tools::getValue('content_only')),
'path' => ((isset($this->cms->id_cms_category) AND $this->cms->id_cms_category) ? Tools::getFullPath((int)($this->cms->id_cms_category), $this->cms->meta_title, 'CMS') : Tools::getFullPath(1, $this->cms->meta_title, 'CMS'))
)); }
elseif ($this->assignCase == 2) {
self::$smarty->assign(array(
'category' => $this->cms_category, 'sub_category' => $this-
'cms_pages' => CMS::getCMSPages((int)(self::$cookie->id_lang),
(int)($this->cms_category->id) ),
'path' => ($this->cms_category->id !== 1) ? Tools::getPath((int)($this->cms_category->id), $this->cms_category->name, false, 'CMS') : '',
)); }
}
public function displayContent() {
parent::displayContent();
self::$smarty->display(_PS_THEME_DIR_.'cms.tpl'); }
}
Listing BestSalesController.php
<?php /*
* 2007-2011 PrestaShop *
* NOTICE OF LICENSE *
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER *
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
* @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 7197 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class BestSalesControllerCore extends FrontController {
public $php_self = 'best-sales.php';
public function process() {
$this->productSort();
$nbProducts = (int)(ProductSale::getNbSales()); $this->pagination($nbProducts);
self::$smarty->assign(array(
'products' =>
ProductSale::getBestSales((int)(self::$cookie->id_lang), (int)($this->p) - 1, (int)($this->n), $this->orderBy, $this->orderWay),
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
'nbProducts' => $nbProducts,
'homeSize' => Image::getSize('home') ));
}
public function setMedia() {
parent::setMedia();
Tools::addCSS(_THEME_CSS_DIR_.'product_list.css'); }
public function displayContent() {
parent::displayContent();
self::$smarty->display(_PS_THEME_DIR_.'best-sales.tpl');
Listing NewProductsController.php
<?php /*
* 2007-2011 PrestaShop *
* NOTICE OF LICENSE *
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER *
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 7197 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class NewProductsControllerCore extends FrontController {
public $php_self = 'new-products.php';
public function setMedia() {
parent::setMedia();
public function process() {
parent::process();
$this->productSort();
$nbProducts =
(int)(Product::getNewProducts((int)(self::$cookie->id_lang), isset($this->p) ? (int)($this->p) - 1 : NULL, isset($this->n) ? (int)($this->n) : NULL, true));
$this->pagination($nbProducts);
self::$smarty->assign(array(
'products' =>
Product::getNewProducts((int)(self::$cookie->id_lang), (int)(>p) - 1, (int)(>n), false, $this->orderBy, $this->orderWay),
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
'nbProducts' => (int)($nbProducts), 'homeSize' => Image::getSize('home') ));
}
public function displayContent() {
parent::displayContent();
self::$smarty->display(_PS_THEME_DIR_.'new-products.tpl');
} }
Listing PricesDropController.php
<?php /*
* 2007-2011 PrestaShop *
* NOTICE OF LICENSE *
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER *
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 7197 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class PricesDropControllerCore extends FrontController {
public $php_self = 'prices-drop.php';
public function setMedia() {
parent::setMedia();
Tools::addCSS(_THEME_CSS_DIR_.'product_list.css'); }
public function process() {
parent::process();
$this->productSort();
$nbProducts =
Product::getPricesDrop((int)(self::$cookie->id_lang), NULL, NULL, true);
$this->pagination($nbProducts);
self::$smarty->assign(array(
'products' =>
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
'nbProducts' => $nbProducts,
'homeSize' => Image::getSize('home') ));
}
public function displayContent() {
parent::displayContent();
self::$smarty->display(_PS_THEME_DIR_.'prices-drop.tpl');
} }
Listing Login.php
<?php /*
* 2007-2011 PrestaShop *
* NOTICE OF LICENSE *
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER *
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2011 PrestaShop SA