123 lines
4.1 KiB
PHP
123 lines
4.1 KiB
PHP
<?php
|
|
|
|
namespace KupShop\CommentsBundle\Admin;
|
|
|
|
use KupShop\AdminBundle\Util\LegacyAdminCredentials;
|
|
use KupShop\CommentsBundle\Comment;
|
|
use KupShop\CommentsBundle\Util\CommentsUtil;
|
|
use KupShop\KupShopBundle\Util\Compat\ServiceContainer;
|
|
use Query\Operator;
|
|
|
|
class Comments extends \Window
|
|
{
|
|
/** @var CommentsUtil */
|
|
private $commentsUtil;
|
|
|
|
/** @var LegacyAdminCredentials */
|
|
private $adminCredentials;
|
|
|
|
protected $nameField = 'id';
|
|
|
|
private $objectId;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->commentsUtil = ServiceContainer::getService(CommentsUtil::class);
|
|
$this->adminCredentials = ServiceContainer::getService(LegacyAdminCredentials::class);
|
|
}
|
|
|
|
public function get_vars()
|
|
{
|
|
$vars = parent::get_vars();
|
|
|
|
$vars['body']['type'] = empty($vars['body']['data']['id_article']) ? Comment::TYPE_PRODUCT : Comment::TYPE_ARTICLE;
|
|
$vars['body']['objectId'] = empty($vars['body']['data']['id_article']) ? $vars['body']['data']['id_product'] : $vars['body']['data']['id_article'];
|
|
|
|
$this->objectId = $vars['body']['objectId'];
|
|
|
|
switch ($vars['body']['type']) {
|
|
case Comment::TYPE_PRODUCT:
|
|
$this->show_on_web = Comment::TYPE_PRODUCT;
|
|
$product = new \Product();
|
|
$product->createFromDB($vars['body']['objectId']);
|
|
$vars['body']['object'] = $product;
|
|
break;
|
|
case Comment::TYPE_ARTICLE:
|
|
$this->show_on_web = Comment::TYPE_ARTICLE;
|
|
$vars['body']['object'] = sqlQueryBuilder()->select('title')->from('articles')
|
|
->where(Operator::equals(['id' => $vars['body']['data']['id_article']]))
|
|
->execute()->fetchOne();
|
|
break;
|
|
}
|
|
|
|
$vars['body']['children'] = sqlQueryBuilder()->select("id, CONCAT(SUBSTRING(REPLACE(content, ' ', ''), 1, 100), '...') content")
|
|
->from('comments')
|
|
->where(Operator::equals(['id_parent' => $this->getID()]))
|
|
->orderBy('date_add', 'ASC')
|
|
->execute()->fetchAllAssociative();
|
|
|
|
if (!empty($this->getCustomData()['history'])) {
|
|
$vars['body']['history'] = array_reverse($this->getCustomData()['history']);
|
|
}
|
|
|
|
if ($vars['body']['data']['id_user']) {
|
|
$vars['body']['data']['user'] = sqlQueryBuilder()->select('id, name, surname, email')
|
|
->from('users')->where(Operator::equals(['id' => $vars['body']['data']['id_user']]))
|
|
->execute()->fetchAssociative();
|
|
}
|
|
|
|
return $vars;
|
|
}
|
|
|
|
public function handleUpdate()
|
|
{
|
|
if ($this->getID()) {
|
|
$data = $this->getData();
|
|
$content = sqlQueryBuilder()->select('content')->from('comments')
|
|
->andWhere(Operator::equals(['id' => $this->getID()]))
|
|
->execute()->fetchOne();
|
|
if ($content != $data['content']) {
|
|
$custom_data = $this->getCustomData();
|
|
$format = \Settings::getDateFormat().' '.\Settings::getTimeFormat();
|
|
$custom_data['history'][] = ['date_updated' => date($format), 'admin' => $this->adminCredentials->getAdminName()];
|
|
$this->setCustomData($custom_data);
|
|
}
|
|
}
|
|
|
|
$SQL = parent::handleUpdate();
|
|
|
|
if ($SQL) {
|
|
$data = $this->getData();
|
|
if (!empty($data['reply'])) {
|
|
$this->commentsUtil->addComment(
|
|
(int) $data['objectId'],
|
|
$data['type'],
|
|
$data['reply'],
|
|
(int) $this->getID(),
|
|
null,
|
|
$data['id_language'],
|
|
$this->adminCredentials->getAdminID(),
|
|
Comment::STATUS_CONFIRMED
|
|
);
|
|
}
|
|
}
|
|
|
|
return $SQL;
|
|
}
|
|
|
|
public function getShowOnWeb()
|
|
{
|
|
$return = parent::getShowOnWeb();
|
|
|
|
if (!$this->objectId || !$return) {
|
|
return null;
|
|
}
|
|
|
|
$return['id'] = $this->objectId;
|
|
|
|
return $return;
|
|
}
|
|
}
|
|
|
|
return Comments::class;
|