Files
grzanieplus.pl/plugins/stOkazjePlugin/modules/stOkazjeBackend/actions/actions.class.php
2025-03-12 17:06:23 +01:00

192 lines
6.6 KiB
PHP

<?php
/**
* SOTESHOP/stOkazjePlugin
*
* Ten plik należy do aplikacji stOkazjePlugin 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 stOkazjePlugin
* @subpackage actions
* @copyright SOTE (www.sote.pl)
* @license http://www.sote.pl/license/sote (Professional License SOTE)
* @version $Id: actions.class.php 12554 2011-04-27 08:30:56Z michal $
* @author Michal Prochowski <michal.prochowski@sote.pl>
*/
/**
* Klasa stOkazjeBackendActions
*
* @package stOkazjePlugin
* @subpackage actions
*/
class stOkazjeBackendActions extends autostOkazjeBackendActions
{
/**
* Przeciążenie aktualizacji config'a
*/
protected function updateConfigFromRequest()
{
$config = $this->getRequestParameter('config');
$this->config->set('use_product_code', isset($config['use_product_code']) ? $config['use_product_code'] : null);
$this->config->set('ads_tracker', $config['ads_tracker']);
foreach (stOkazje::getAvailabilities() as $availability)
{
$this->config->set('availability_'.$availability->getId(), $config['availability_'.$availability->getId()]);
}
if (is_dir(sfConfig::get('sf_plugins_dir')."/appAdsTrackerPlugin")) {
if ($config['ads_tracker']==1) {
appAdsTracker::checkCompare("okazje",1);
} else {
appAdsTracker::checkCompare("okazje",0);
}
}
}
public function executeProductEnable()
{
$ids = $this->getRequestParameter('okazje[selected]', array());
foreach ($ids as $id) {
$c = new Criteria();
$c->add(OkazjePeer::PRODUCT_ID, $id);
$Okazje = OkazjePeer::doSelectOne($c);
if (null === $Okazje) {
$Okazje = new Okazje();
$Okazje->setProductId($id);
}
$Okazje->setActive(true);
$Okazje->save();
}
return $this->redirect('stOkazjeBackend/list?page=' . $this->getRequestParameter('page', 1));
}
public function executeProductDisable()
{
$ids = $this->getRequestParameter('okazje[selected]', array());
/**
* @var Okazje $Okazje
*/
foreach (OkazjePeer::retrieveByPKs(array_values($ids)) as $Okazje) {
$Okazje->delete();
}
return $this->redirect('stOkazjeBackend/list?page=' . $this->getRequestParameter('page', 1));
}
protected function addFiltersCriteria($c)
{
if (isset($this->filters['code_is_empty'])) {
$criterion = $c->getNewCriterion(ProductPeer::CODE, '');
$criterion->addOr($c->getNewCriterion(ProductPeer::CODE, null, Criteria::ISNULL));
$c->add($criterion);
} else if (isset($this->filters['code']) && $this->filters['code'] !== '') {
if (method_exists($this, 'filterCriteriaByProductCode')) {
$filter_anyway = !$this->filterCriteriaByProductCode($c, $this->filters['code']);
} else {
$filter_anyway = true;
}
if ($filter_anyway) {
$c->add(ProductPeer::CODE, '%' . $this->filters['code'] . '%', Criteria::LIKE);
}
}
if (isset($this->filters['product_is_empty'])) {
$criterion = $c->getNewCriterion(ProductPeer::OPT_NAME, '');
$criterion->addOr($c->getNewCriterion(ProductPeer::OPT_NAME, null, Criteria::ISNULL));
$c->add($criterion);
} else if (isset($this->filters['product']) && $this->filters['product'] !== '') {
if (method_exists($this, 'filterCriteriaByProductOptName')) {
$filter_anyway = !$this->filterCriteriaByProductOptName($c, $this->filters['product']);
} else {
$filter_anyway = true;
}
if ($filter_anyway) {
$c->add(ProductPeer::OPT_NAME, '%' . $this->filters['product'] . '%', Criteria::LIKE);
}
}
if (isset($this->filters['active_is_empty'])) {
$criterion = $c->getNewCriterion(OkazjePeer::ACTIVE, '');
$criterion->addOr($c->getNewCriterion(OkazjePeer::ACTIVE, null, Criteria::ISNULL));
$c->add($criterion);
} else if (isset($this->filters['active']) && $this->filters['active'] !== '') {
if ($this->filters['active'] == null || $this->filters['active'] == 0) {
$criterion = $c->getNewCriterion(OkazjePeer::ACTIVE, '');
$criterion->addOr($c->getNewCriterion(OkazjePeer::ACTIVE, null, Criteria::ISNULL));
$c->add($criterion);
}
if ($this->filters['active'] == 1) {
$c->add(OkazjePeer::ACTIVE, $this->filters['active']);
}
}
if ($this->filters) {
$c->add(OkazjePeer::PRODUCT_ID, 0, Criteria::NOT_EQUAL);
}
$this->getDispatcher()->notify(new sfEvent($this, 'autoStOkazjeBackendActions.addFiltersCriteria', array('criteria' => $c)));
}
public function executeAddAll()
{
OkazjePeer::doDeleteAll();
$con = Propel::getConnection();
$con->executeQuery(sprintf(
"INSERT INTO %s(%s, %s) (SELECT %s, 1 FROM %s)",
OkazjePeer::TABLE_NAME,
OkazjePeer::PRODUCT_ID,
OkazjePeer::ACTIVE,
ProductPeer::ID,
ProductPeer::TABLE_NAME
));
return $this->redirect('stOkazjeBackend/list?page=' . $this->getRequestParameter('page', 1));
}
public function executeDeleteAll()
{
OkazjePeer::doDeleteAll();
return $this->redirect('stOkazjeBackend/list?page=' . $this->getRequestParameter('page', 1));
}
protected function getOkazjeOrCreate($id = 'id')
{
$okazje = OkazjePeer::retrieveByProduct($this->related_object);
if (null === $okazje) {
if ($this->hasRequestParameter('id')) {
return $this->redirect('@stOkazjePlugin?action=create&product_id=' . $this->related_object->getId().'&view=default');
} else {
$okazje = new Okazje();
$okazje->setProduct($this->related_object);
}
}
return $okazje;
}
public function executeGenerateCustom()
{
parent::executeGenerateCustom();
$i18n = $this->getContext()->getI18n();
$this->getBreadcrumbsBuilder()->getDefaultBreadcrumbs()->add($i18n->__('Generowanie pliku'));
}
}