270 lines
8.6 KiB
PHP
270 lines
8.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* SOTESHOP/stReview
|
|
*
|
|
* Ten plik należy do aplikacji stReview opartej na licencji (Professional License SOTE).
|
|
* Nie zmieniaj tego pliku, jeśli chcesz korzystać z automatycznych aktualizacji oprogramowania.
|
|
* Jeśli chcesz wprowadzać swoje modyfikacje do programu, zapoznaj się z dokumentacją, jak zmieniać
|
|
* oprogramowanie bez zmiany kodu bazowego http://www.sote.pl/modifications
|
|
*
|
|
* @package stReview
|
|
* @subpackage actions
|
|
* @copyright SOTE (www.sote.pl)
|
|
* @license http://www.sote.pl/license/sote (Professional License SOTE)
|
|
* @version $Id: actions.class.php 1153 2009-10-07 08:24:35Z pawel $
|
|
*/
|
|
|
|
/**
|
|
* stReview actions
|
|
*
|
|
* @author Paweł Byszewski <pawel.byszewski@sote.pl>, Krzysztof Bebło <krzysztof.beblo@sote.pl>
|
|
*
|
|
* @package stReview
|
|
* @subpackage actions
|
|
*/
|
|
class stReviewActions extends autostReviewActions
|
|
{
|
|
/**
|
|
* Filtr po kolumnie klient
|
|
* Szukanie po imieniu i nazwisku, ale również po mail'u jeśli zawarta jest '@' w wyszukiwaniu
|
|
*
|
|
* @param Criteria $c
|
|
*/
|
|
protected function addFiltersCriteria($c)
|
|
{
|
|
parent::addFiltersCriteria($c);
|
|
if (isset($this->filters['filter_client']) && !empty($this->filters['filter_client']))
|
|
{
|
|
if (strpos($this->filters['filter_client'], '@') !== false)
|
|
{
|
|
$c->add(sfGuardUserPeer::USERNAME, '%' . $this->filters['filter_client'] . '%', Criteria::LIKE);
|
|
}
|
|
else
|
|
{
|
|
$client = explode(" ", $this->filters['filter_client']);
|
|
|
|
$c->addJoin(UserDataPeer::SF_GUARD_USER_ID, sfGuardUserPeer::ID);
|
|
|
|
$c->add(UserDataPeer::IS_BILLING, true);
|
|
|
|
$c->add(UserDataPeer::NAME, '%' . $client[0] . '%', Criteria::LIKE);
|
|
|
|
if (isset($client[1]) && !empty($client[1]))
|
|
{
|
|
$c->add(UserDataPeer::SURNAME, '%' . $client[1] . '%', Criteria::LIKE);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isset($this->filters['agreement']) && 0 == $this->filters['agreement'])
|
|
{
|
|
$c->add(ReviewPeer::SKIPPED, true, Criteria::NOT_EQUAL);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Filtr po kolumnie wyświetlania recenzji
|
|
*
|
|
* @param Criteria $criteria
|
|
* @param string $status
|
|
* @return bool
|
|
*/
|
|
protected function filterCriteriaByActive($criteria, $status)
|
|
{
|
|
if (!$status)
|
|
{
|
|
$criterion = $criteria->getNewCriterion(ReviewPeer::ACTIVE, false);
|
|
$criterion->addOr($criteria->getNewCriterion(ReviewPeer::AGREEMENT, false));
|
|
$criteria->add($criterion);
|
|
}
|
|
else
|
|
{
|
|
$criteria->add(ReviewPeer::ACTIVE, true);
|
|
$criteria->add(ReviewPeer::AGREEMENT, true);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public function executeReviewAccept()
|
|
{
|
|
$request = $this->getRequest();
|
|
|
|
$id = $request->getParameter('id');
|
|
|
|
$review = ReviewPeer::retrieveByPK($id);
|
|
|
|
if ($review)
|
|
{
|
|
$review->setAgreement(true);
|
|
|
|
$review->save();
|
|
}
|
|
|
|
if ($this->getRequest()->isXmlHttpRequest())
|
|
{
|
|
return sfView::HEADER_ONLY;
|
|
}
|
|
|
|
return $this->redirect($this->getRequest()->getReferer());
|
|
}
|
|
|
|
public function executeReviewSkip()
|
|
{
|
|
$request = $this->getRequest();
|
|
|
|
$id = $request->getParameter('id');
|
|
|
|
$review = ReviewPeer::retrieveByPK($id);
|
|
|
|
if ($review)
|
|
{
|
|
$review->setSkipped(true);
|
|
|
|
$review->save();
|
|
}
|
|
|
|
if ($this->getRequest()->isXmlHttpRequest())
|
|
{
|
|
return sfView::HEADER_ONLY;
|
|
}
|
|
|
|
return $this->redirect($this->getRequest()->getReferer());
|
|
}
|
|
|
|
public function executeSendReviewRequest()
|
|
{
|
|
$order_product = OrderProductPeer::retrieveByPK($this->getRequestParameter('order_product_id'));
|
|
$order_product->setSendReview(date("Y-m-d H:i:s"));
|
|
$order_product->save();
|
|
/**
|
|
* @var sfWebRequest
|
|
*/
|
|
$request = $this->getRequest();
|
|
stReview::sendMail($order_product->getOrder()->getSfGuardUser(), $order_product);
|
|
|
|
if (!$request->isXmlHttpRequest())
|
|
{
|
|
return $this->redirect('stOrder/edit?id=' . $order_product->getOrderId());
|
|
}
|
|
|
|
$i18n = $this->getContext()->getI18N();
|
|
|
|
sfLoader::loadHelpers(array('Helper', 'stAdminGenerator'));
|
|
|
|
return $this->renderJSON(array(
|
|
'content' => st_admin_get_icon('envelop', array('class' => 'img_send' . $order_product->getId())) .
|
|
st_admin_get_icon('check-circle', array('size' => 15, 'style' => 'margin-left: -11px; margin-bottom: -14px')),
|
|
'title' => stReview::getSendTime($order_product->getSendReview()) . '<br>' . $i18n->__('Kliknij aby wysłać ponownie.'),
|
|
));
|
|
}
|
|
|
|
public function executeConfig()
|
|
{
|
|
$context = $this->getContext();
|
|
$this->config = stConfig::getInstance($context);
|
|
$this->config->setCulture($this->getRequestParameter('culture', stLanguage::getOptLanguage()));
|
|
|
|
$this->select_options = array();
|
|
|
|
$c = new Criteria();
|
|
$orderStatus = OrderStatusPeer::doSelect($c);
|
|
|
|
|
|
foreach ($orderStatus as $status)
|
|
{
|
|
$this->select_options[$status->getId()] = $status->getOptName();
|
|
}
|
|
|
|
if ($this->getRequest()->getMethod() == sfRequest::POST)
|
|
{
|
|
$updateConfig = $this->getRequestParameter('config');
|
|
|
|
$this->config->set('auto_send', $updateConfig['auto_send']);
|
|
$this->config->set('description', $updateConfig['description'], true);
|
|
$this->config->set('order_status_type', $updateConfig['order_status_type']);
|
|
$this->config->set('send_type', $updateConfig['send_type']);
|
|
$this->config->set('cron_du_date', $updateConfig['cron_du_date']);
|
|
$this->config->set('cron_send', $updateConfig['cron_send']);
|
|
|
|
if ($updateConfig['cron_send'] == 1)
|
|
{
|
|
$task = stTaskScheluder::getTask('review_task')->getTask();
|
|
$task->setIsActive(true);
|
|
$task->save();
|
|
}
|
|
else
|
|
{
|
|
$task = stTaskScheluder::getTask('review_task')->getTask();
|
|
$task->setIsActive(false);
|
|
$task->save();
|
|
}
|
|
|
|
$this->config->save(true);
|
|
stTheme::clearSmartyCache();
|
|
stFastCacheManager::clearCache();
|
|
|
|
$this->setFlash('notice', $context->getI18n()->__('Twoje zmiany zostały zapisane', null, 'stAdminGeneratorPlugin'));
|
|
$this->redirect('stReview/config?culture=' . $this->getRequestParameter('culture', stLanguage::getOptLanguage()));
|
|
}
|
|
}
|
|
|
|
protected function updateReviewFromRequest()
|
|
{
|
|
if ($this->getRequest()->getFileSize('review[user_picture]'))
|
|
{
|
|
$currentFile = sfConfig::get('sf_upload_dir') . $this->review->getUserPicture();
|
|
|
|
$fileName = md5($this->getRequest()->getFileName('review[user_picture]') . time() . rand(0, 99999));
|
|
$ext = $this->getRequest()->getFileExtension('review[user_picture]');
|
|
|
|
if (is_file($currentFile))
|
|
{
|
|
unlink($currentFile);
|
|
}
|
|
|
|
$this->review->setUserPicture("/review_picture/" . $this->getRequestParameter('culture', stLanguage::getOptLanguage()) . '/' . $fileName . $ext);
|
|
|
|
$this->getRequest()->moveFile('review[user_picture]', sfConfig::get('sf_upload_dir') . $this->review->getUserPicture());
|
|
}
|
|
|
|
return parent::updateReviewFromRequest();
|
|
}
|
|
|
|
public function executeDeleteImage()
|
|
{
|
|
$request = $this->getRequest();
|
|
|
|
$id = $request->getParameter('id');
|
|
|
|
$review = ReviewPeer::retrieveByPK($id);
|
|
|
|
if ($review)
|
|
{
|
|
$review->setUserPicture(null);
|
|
$review->save();
|
|
}
|
|
|
|
stFastCacheManager::clearCache();
|
|
foreach (glob(sfConfig::get('sf_root_dir') . '/cache/smarty_c/*') as $file)
|
|
{
|
|
unlink($file);
|
|
}
|
|
|
|
$this->setFlash('notice', 'Zdjęcie zostało usunięte');
|
|
$this->redirect('stReview/edit?id=' . $id);
|
|
}
|
|
|
|
public function filterCriteriaByReviewOrderId($c, $value){
|
|
|
|
if ($value){
|
|
$c->add(ReviewPeer::ORDER_ID, null, Criteria::ISNOTNULL);
|
|
}elseif($value !== ""){
|
|
$c->add(ReviewPeer::ORDER_ID, null, Criteria::ISNULL);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|