, Krzysztof Bebło * * @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()) . '
' . $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; } }