PEEL Shopping
Open source ecommerce : PEEL Shopping
export_produits.php
Go to the documentation of this file.
1 <?php
2 // This file should be in UTF8 without BOM - Accents examples: éèê
3 // +----------------------------------------------------------------------+
4 // | Copyright (c) 2004-2015 Advisto SAS, service PEEL - contact@peel.fr |
5 // +----------------------------------------------------------------------+
6 // | This file is part of PEEL Shopping 8.0.0, which is subject to an |
7 // | opensource GPL license: you are allowed to customize the code |
8 // | for your own needs, but must keep your changes under GPL |
9 // | More information: https://www.peel.fr/lire/licence-gpl-70.html |
10 // +----------------------------------------------------------------------+
11 // | Author: Advisto SAS, RCS 479 205 452, France, https://www.peel.fr/ |
12 // +----------------------------------------------------------------------+
13 // $Id: export_produits.php 47345 2015-10-12 17:59:08Z sdelaporte $
14 define('IN_PEEL_ADMIN', true);
15 include("../configuration.inc.php");
17 necessite_priv("admin_products,admin_webmastering");
18 
19 // DEBUT PARAMETRAGE
20 // La colonne stock dans peel_produits ne sert pas, donc l'exporter induit en confusion
21 $excluded_fields = array('stock');
22 $specific_fields_array = array($GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_LISTED_PRICE_INCLUDING_VAT'], $GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_LISTED_PRICE_EXCLUDING_VAT'], $GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_SIZES'], $GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_COLORS'], $GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_BRAND'], $GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_ASSOCIATED_PRODUCTS'], $GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_CATEGORY']);
23 
24 $hook_result = call_module_hook('export_products_get_configuration_array', array(), 'array');
25 $specific_fields_array = array_merge_recursive($specific_fields_array, vb($hook_result['product_field_names'], array()));
26 
27 // FIN PARAMETRAGE
28 if (!empty($_GET['encoding'])) {
29  $page_encoding = $_GET['encoding'];
30 } elseif (!empty($GLOBALS['site_parameters']['export_encoding'])) {
31  $page_encoding = $GLOBALS['site_parameters']['export_encoding'];
32 } else {
33  $page_encoding = 'utf-8';
34 }
35 $output = '';
36 $filename = "export_produits_" . str_replace('/', '-', date($GLOBALS['date_basic_format_short'])) . ".csv";
37 // On ne veut pas polluer le fichier exporté par un quelconque message d'erreur
38 @ini_set('display_errors', 0);
40 // On récupère les noms des champs de la table de produits
42 
43 // On rajoute ensuite des colonnes calculées
44 foreach ($specific_fields_array as $this_field) {
45  $product_field_names[] = $this_field;
46 }
47 // On retire les colonnes non désirées
48 foreach($product_field_names as $this_key => $this_field) {
49  if (in_array($this_field, $excluded_fields)) {
50  unset($product_field_names[$this_key]);
51  }
52 }
53 // On trie les colonnes
55 // On construit la ligne des titres
57 foreach($product_field_names as $this_field_name) {
58  $title_line_output[] = filtre_csv($this_field_name);
59 }
60 $output .= implode("\t", $title_line_output) . "\r\n";
61 // On construit toutes les lignes de données
62 $q = "SELECT p.*, c.id AS categorie_id, c.nom_" . $_SESSION['session_langue'] . " AS categorie
63  FROM peel_produits p
64  INNER JOIN peel_produits_categories pc ON pc.produit_id=p.id
65  INNER JOIN peel_categories c ON c.id = pc.categorie_id AND " . get_filter_site_cond('categories', 'c') . "
66  WHERE " . get_filter_site_cond('produits', 'p', true) . "
67  GROUP BY id
68  ORDER BY id";
70 $i = 0;
72  // On récupère les infos liées à chaque produit
73  $product_attributs_id_array = array();
74  $product_object = new Product($result['id'], $result, true, null, true, !check_if_module_active('micro_entreprise'));
75  $result[$GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_LISTED_PRICE_INCLUDING_VAT']] = fxsl($product_object->get_original_price(true, false, false));
76  $result[$GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_LISTED_PRICE_EXCLUDING_VAT']] = fxsl($product_object->get_original_price(false, false, false));
77  $result[$GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_SIZES']] = implode(',', $product_object->get_possible_sizes('export'));
78  $result[$GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_COLORS']] = implode(',', $product_object->get_possible_colors());
79  $result[$GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_BRAND']] = implode(',', $product_object->get_product_brands());
80  $result[$GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_ASSOCIATED_PRODUCTS']] = implode(',', $product_object->get_product_references());
81  $result[$GLOBALS['STR_ADMIN_EXPORT_PRODUCTS_CATEGORY']] = implode(',', $product_object->get_possible_categories());
82 
83  $hook_result = call_module_hook('export_products_get_line_infos_array', array('id' => $product_object->id), 'array');
84  $result = array_merge_recursive($result, $hook_result);
85 
86  // On génère la ligne
87  $this_line_output = array();
88  foreach($product_field_names as $this_field_name) {
89  // La colonne stock dans peel_produits ne sert pas, donc l'exporter induit en confusion
90  if (in_array($this_field_name, $specific_fields_array) || String::substr($this_field_name, 0, String::strlen('descriptif_')) == 'descriptif_' || String::substr($this_field_name, 0, String::strlen('description_')) == 'description_') {
91  $this_line_output[] = filtre_csv(String::nl2br_if_needed(String::html_entity_decode_if_needed(vb($result[$this_field_name]), ENT_QUOTES)));
92  } elseif (!empty($result[$this_field_name]) && is_array($result[$this_field_name])) {
93  $this_line_output[] = filtre_csv(implode(',', $result[$this_field_name]));
94  } else {
95  $this_line_output[] = filtre_csv(vb($result[$this_field_name]));
96  }
97  }
98  $output .= implode("\t", $this_line_output) . "\r\n";
99  unset($product_object);
100  $i++;
101  if($i%10==0) {
102  // On transfère au fur et à mesure pour faire patienter utilisateur, et pour éviter erreur du type : Script timed out before returning headers
103  echo String::convert_encoding($output, $page_encoding, GENERAL_ENCODING);
104  $output = '';
105  }
106 }
107 
108 echo String::convert_encoding($output, $page_encoding, GENERAL_ENCODING);
109 
$result
static convert_encoding($string, $new_encoding, $original_encoding=null)
Converts the character encoding of string $string to $new_encoding from optionally $original_encoding...
Definition: String.php:375
$hook_result
static html_entity_decode_if_needed($string)
String::html_entity_decode_if_needed()
Definition: String.php:533
static strlen($string)
Returns the length of the given string.
Definition: String.php:36
if(empty($_GET['id'])) if(!empty($GLOBALS['site_parameters']['allow_multiple_product_url_with_category'])) $product_object
$excluded_fields
necessite_priv($priv, $demo_allowed=true, $configuration_modification=false)
Cette fonction vérifie si l'utilisateur a les privilèges de $priv.
Definition: fonctions.php:1575
get_filter_site_cond($table_technical_code, $table_alias=null, $use_strict_rights_if_in_admin=false, $specific_site_id=null, $exclude_public_items=false, $admin_force_multisite_if_allowed=false)
Retourne la condition SQL permettant de filtrer les données pour une table.
Definition: fonctions.php:4643
query($query, $die_if_error=false, $database_object=null, $silent_if_error=false, $security_sql_filter=true)
The query() function is meant to be called anywhere you want to make a query.
Definition: database.php:158
fxsl($number_string, $separator= ',')
Formatte un nombre pour insertion dans du CSV.
Definition: format.php:290
vb(&$var, $default=null)
Variable blanche if $var n'est pas défini, retourne $default, sinon retourne $var.
Definition: format.php:97
if(strlen($date2)== '10') if($type== 'users-by-age'&&a_priv('admin_users', true)) elseif($type== 'forums-count'&&a_priv('admin_content', true)) elseif($type== 'forums-categories'&&a_priv('admin_content', true)) elseif($type== 'users-count'&&a_priv('admin_users', true)) elseif($type== 'product-categories'&&a_priv('admin_products', true)) elseif($type== 'users-by-sex'&&a_priv('admin_users', true)) elseif($type== 'users-by-country'&&a_priv('admin_users', true)) elseif($type== 'sales'&&a_priv('admin_sales', true))
Definition: chart-data.php:160
necessite_identification()
Si l'utilisateur n'est pas connecté à un compte, on affiche une page d'identification et arrête le sc...
Definition: fonctions.php:1596
get_table_field_names($table_name, $link_identifier=null, $silent_if_error=false)
get_table_field_names()
Definition: database.php:495
filtre_csv($string, $separator="\t")
Formatte une chaine de caractère pour insertion dans du CSV.
Definition: format.php:277
fetch_assoc($query_result)
fetch_assoc()
Definition: database.php:283
$specific_fields_array
call_module_hook($hook, $params, $mode= 'boolean')
Appelle la fonction correspondant au $hook pour chaque module installé La fonction doit s'appeler : [...
$GLOBALS['page_columns_count']
if(!check_if_module_active('search')) $page_encoding
Definition: produit.php:23
$filename
$product_field_names
output_csv_http_export_header($filename, $type= 'excel', $page_encoding)
Génère les entêtes HTTP pour un fichier CSV.
Definition: format.php:802
static substr($string, $start, $length=null)
Returns the portion of string specified by the start and length parameters.
Definition: String.php:112
check_if_module_active($module_name, $specific_file_name=null)
Renvoie si un module est présent et activé ou non - Peut être appelé avant ou après le chargement d'u...
static nl2br_if_needed($string)
Fonction de compatibilité avec de vieilles versions de PEEL ou du contenu qui vient d'ailleurs...
Definition: String.php:559
$title_line_output
if(defined('IN_PEEL_ADMIN')||IN_INSTALLATION) $_SESSION['session_langue']

This documentation for Open ecommerce PEEL Shopping and PEEL.fr has been generated by Doxygen on Thu Oct 15 2015 14:29:08 - Peel ecommerce is a product of Agence web Advisto SAS. All rights reserved.