// fix refactoring templates in AdminCustomerThreadsController

This commit is contained in:
lLefevre
2011-12-02 11:19:03 +00:00
parent a85c5d4cd2
commit 70fc45a18d
18 changed files with 1138 additions and 520 deletions
+113 -19
View File
@@ -1,6 +1,6 @@
<?php
/*
* 2007-2011 PrestaShop
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
@@ -39,24 +39,33 @@ class CustomerThreadCore extends ObjectModel
public $token;
public $date_add;
public $date_upd;
protected $table = 'customer_thread';
protected $identifier = 'id_customer_thread';
protected $fieldsRequired = array('id_lang', 'id_contact', 'token');
protected $fieldsSize = array('email' => 254);
protected $fieldsValidate = array('id_lang' => 'isUnsignedId', 'id_contact' => 'isUnsignedId', 'id_shop' => 'isUnsignedId', 'id_customer' => 'isUnsignedId',
'id_order' => 'isUnsignedId', 'id_product' => 'isUnsignedId', 'email' => 'isEmail', 'token' => 'isGenericName');
protected $fieldsValidate = array(
'id_lang' => 'isUnsignedId',
'id_contact' => 'isUnsignedId',
'id_shop' => 'isUnsignedId',
'id_customer' => 'isUnsignedId',
'id_order' => 'isUnsignedId',
'id_product' => 'isUnsignedId',
'email' => 'isEmail',
'token' => 'isGenericName'
);
public function getFields()
{
$this->validateFields();
$fields['id_lang'] = (int)($this->id_lang);
$fields['id_lang'] = (int)$this->id_lang;
$fields['id_shop'] = (int)$this->id_shop;
$fields['id_contact'] = (int)($this->id_contact);
$fields['id_customer'] = (int)($this->id_customer);
$fields['id_order'] = (int)($this->id_order);
$fields['id_product'] = (int)($this->id_product);
$fields['id_contact'] = (int)$this->id_contact;
$fields['id_customer'] = (int)$this->id_customer;
$fields['id_order'] = (int)$this->id_order;
$fields['id_product'] = (int)$this->id_product;
$fields['status'] = pSQL($this->status);
$fields['email'] = pSQL($this->email);
$fields['token'] = pSQL($this->token);
@@ -64,28 +73,113 @@ class CustomerThreadCore extends ObjectModel
$fields['date_upd'] = pSQL($this->date_upd);
return $fields;
}
public function delete()
{
if (!Validate::isUnsignedId($this->id))
return false;
Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'customer_message` WHERE `id_customer_thread` = '.(int)($this->id));
Db::getInstance()->execute('
DELETE FROM `'._DB_PREFIX_.'customer_message`
WHERE `id_customer_thread` = '.(int)$this->id
);
return (parent::delete());
}
public static function getCustomerMessages($id_customer)
{
return Db::getInstance()->executeS('
SELECT * FROM '._DB_PREFIX_.'customer_thread ct
LEFT JOIN '._DB_PREFIX_.'customer_message cm ON ct.id_customer_thread = cm.id_customer_thread
WHERE id_customer = '.(int)($id_customer));
SELECT *
FROM '._DB_PREFIX_.'customer_thread ct
LEFT JOIN '._DB_PREFIX_.'customer_message cm
ON ct.id_customer_thread = cm.id_customer_thread
WHERE id_customer = '.(int)$id_customer
);
}
public static function getIdCustomerThreadByEmailAndIdOrder($email, $id_order)
{
return Db::getInstance()->getValue('
SELECT cm.id_customer_thread FROM '._DB_PREFIX_.'customer_thread cm
WHERE cm.email = \''.pSQL($email).'\' AND cm.id_shop = '.(int)Context::getContext()->shop->getId(true).' AND cm.id_order = '.(int)$id_order.'');
SELECT cm.id_customer_thread
FROM '._DB_PREFIX_.'customer_thread cm
WHERE cm.email = \''.pSQL($email).'\'
AND cm.id_shop = '.(int)Context::getContext()->shop->getId(true).'
AND cm.id_order = '.(int)$id_order
);
}
public static function getContacts()
{
return Db::getInstance()->executeS('
SELECT cl.*, COUNT(*) as total, (
SELECT id_customer_thread
FROM '._DB_PREFIX_.'customer_thread ct2
WHERE status = "open" AND ct.id_contact = ct2.id_contact
ORDER BY date_upd ASC
LIMIT 1
) as id_customer_thread
FROM '._DB_PREFIX_.'customer_thread ct
LEFT JOIN '._DB_PREFIX_.'contact_lang cl
ON (cl.id_contact = ct.id_contact AND cl.id_lang = '.(int)Context::getContext()->language->id.')
WHERE ct.status = "open"
AND ct.id_contact IS NOT NULL
AND cl.id_contact IS NOT NULL
GROUP BY ct.id_contact HAVING COUNT(*) > 0
');
}
public static function getTotalCustomerThreads($where = null)
{
if (is_null($where))
return (int)Db::getInstance()->getValue('
SELECT COUNT(*)
FROM '._DB_PREFIX_.'customer_thread
');
else
return (int)Db::getInstance()->getValue(sprintf('
SELECT COUNT(*)
FROM '._DB_PREFIX_.'customer_thread
WHERE %s
', $where));
}
public static function getMessageCustomerThreads($id_customer_thread)
{
return Db::getInstance()->executeS('
SELECT ct.*, cm.*, cl.name subject, CONCAT(e.firstname, \' \', e.lastname) employee_name,
CONCAT(c.firstname, \' \', c.lastname) customer_name, c.firstname
FROM '._DB_PREFIX_.'customer_thread ct
LEFT JOIN '._DB_PREFIX_.'customer_message cm
ON (ct.id_customer_thread = cm.id_customer_thread)
LEFT JOIN '._DB_PREFIX_.'contact_lang cl
ON (cl.id_contact = ct.id_contact AND cl.id_lang = '.(int)Context::getContext()->language->id.')
LEFT JOIN '._DB_PREFIX_.'employee e
ON e.id_employee = cm.id_employee
LEFT JOIN '._DB_PREFIX_.'customer c
ON (IFNULL(ct.id_customer, ct.email) = IFNULL(c.id_customer, c.email))
WHERE ct.id_customer_thread = '.(int)$id_customer_thread.'
ORDER BY cm.date_add DESC
');
}
public static function getNextThread($id_customer_thread)
{
$context = Context::getContext();
return Db::getInstance()->getValue('
SELECT id_customer_thread
FROM '._DB_PREFIX_.'customer_thread ct
WHERE ct.status = "open"
AND ct.date_upd = (
SELECT date_add FROM '._DB_PREFIX_.'customer_message
WHERE (id_employee IS NULL OR id_employee = 0)
AND id_customer_thread = '.(int)$id_customer_thread.'
ORDER BY date_add DESC LIMIT 1
)
'.($context->cookie->{'customer_threadFilter_cl!id_contact'} ?
'AND ct.id_contact = '.(int)$context->cookie->{'customer_threadFilter_cl!id_contact'} : '').'
'.($context->cookie->{'customer_threadFilter_l!id_lang'} ?
'AND ct.id_lang = '.(int)$context->cookie->{'customer_threadFilter_l!id_lang'} : '').
' ORDER BY ct.date_upd ASC
');
}
}