* @copyright 2007-2011 PrestaShop SA * @version Release: $Revision: 6626 $ * @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 StatsCheckUp extends Module { function __construct() { $this->name = 'statscheckup'; $this->tab = 'analytics_stats'; $this->version = 1.0; $this->author = 'PrestaShop'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('Catalog evaluation'); $this->description = $this->l('Quick evaluation of your catalog quality.'); } public function install() { foreach (array('CHECKUP_DESCRIPTIONS_LT'=>100,'CHECKUP_DESCRIPTIONS_GT'=>400,'CHECKUP_IMAGES_LT'=>1,'CHECKUP_IMAGES_GT'=>2,'CHECKUP_SALES_LT'=>1,'CHECKUP_SALES_GT'=>2,'CHECKUP_STOCK_LT'=>1,'CHECKUP_STOCK_GT'=>3) as $confname => $confdefault) if (!Configuration::get($confname)) Configuration::updateValue($confname, (int)$confdefault); return (parent::install() && $this->registerHook('AdminStatsModules')); } function hookAdminStatsModules() { global $cookie, $currentIndex; if (Tools::isSubmit('submitCheckup')) { foreach (array('CHECKUP_DESCRIPTIONS_LT','CHECKUP_DESCRIPTIONS_GT','CHECKUP_IMAGES_LT','CHECKUP_IMAGES_GT','CHECKUP_SALES_LT','CHECKUP_SALES_GT','CHECKUP_STOCK_LT','CHECKUP_STOCK_GT') as $confname) Configuration::updateValue($confname, (int)Tools::getValue($confname)); echo '
'.$this->l('Configuration updated').'
'.$this->l('Configuration updated').'
',
1 => '
',
2 => '
'
);
$tokenProducts = Tools::getAdminToken('AdminCatalog'.(int)(Tab::getIdFromClassName('AdminCatalog')).(int)($cookie->id_employee));
$divisor = 4;
$totals = array('products' => 0, 'active' => 0, 'images' => 0, 'sales' => 0, 'stock' => 0);
foreach ($languages as $language)
{
$divisor++;
$totals['description_'.$language['iso_code']] = 0;
}
$orderBy = 'p.id_product';
if ($cookie->checkup_order == 2)
$orderBy = 'pl.name';
elseif ($cookie->checkup_order == 3)
$orderBy = 'nbSales DESC';
$result = $db->ExecuteS('
SELECT p.id_product, p.active, pl.name, (
SELECT COUNT(*)
FROM '._DB_PREFIX_.'image i
WHERE i.id_product = p.id_product
) as nbImages, (
SELECT SUM(od.product_quantity)
FROM '._DB_PREFIX_.'orders o
LEFT JOIN '._DB_PREFIX_.'order_detail od ON o.id_order = od.id_order
WHERE od.product_id = p.id_product
AND o.invoice_date BETWEEN '.ModuleGraph::getDateBetween().'
) as nbSales, IFNULL((
SELECT SUM(pa.quantity)
FROM '._DB_PREFIX_.'product_attribute pa
WHERE pa.id_product = p.id_product
), p.quantity) as stock
FROM '._DB_PREFIX_.'product p
LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (p.id_product = pl.id_product AND pl.id_lang = '.(int)$cookie->id_lang.')
ORDER BY '.$orderBy);
$arrayConf = array(
'DESCRIPTIONS' => array('name' => $this->l('Descriptions'), 'text' => $this->l('chars (without HTML)')),
'IMAGES' => array('name' => $this->l('Images'), 'text' => $this->l('images')),
'SALES' => array('name' => $this->l('Sales'), 'text' => $this->l('orders / month')),
'STOCK' => array('name' => $this->l('Stock'), 'text' => $this->l('items'))
);
$html = '
| '.$this->l('ID').' | '.$this->l('Item').' | '.$this->l('Active').' | '; foreach ($languages as $language) $html .= ''.$this->l('Desc.').' ('.strtoupper($language['iso_code']).') | '; $html .= ''.$this->l('Images').' | '.$this->l('Sales').' | '.$this->l('Stock').' | '.$this->l('Global').' | |
|---|---|---|---|---|---|---|---|---|
| '.$row['id_product'].' | '.Tools::substr($row['name'], 0, 42).' | '.$arrayColors[$scores['active']].' | '; foreach ($languages as $language) if (isset($row['desclength_'.$language['iso_code']])) $html .= ''.(int)$row['desclength_'.$language['iso_code']].' '.$arrayColors[$scores['description_'.$language['iso_code']]].' | '; else $html .= '0 '.$arrayColors[0].' | '; $html .= ''.(int)$row['nbImages'].' '.$arrayColors[$scores['images']].' | '.(int)$row['nbSales'].' '.$arrayColors[$scores['sales']].' | '.(int)$row['stock'].' '.$arrayColors[$scores['stock']].' | '.$arrayColors[$scores['average']].' |
| '.$this->l('Active').' | '; foreach ($languages as $language) $html .= ''.$this->l('Desc.').' ('.strtoupper($language['iso_code']).') | '; $html .= ''.$this->l('Images').' | '.$this->l('Sales').' | '.$this->l('Stock').' | '.$this->l('Global').' | |||
| '.$arrayColors[$totals['active']].' | '; foreach ($languages as $language) $html .= ''.$arrayColors[$totals['description_'.$language['iso_code']]].' | '; $html .= ''.$arrayColors[$totals['images']].' | '.$arrayColors[$totals['sales']].' | '.$arrayColors[$totals['stock']].' | '.$arrayColors[$totals['average']].' | |||