Files
2025-03-12 17:06:23 +01:00

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;
}
}