first commit

This commit is contained in:
2025-03-12 17:06:23 +01:00
commit 2241f7131f
13185 changed files with 1692479 additions and 0 deletions

View File

@@ -0,0 +1,192 @@
<?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'));
}
}

View File

@@ -0,0 +1,37 @@
<?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: components.class.php 10 2009-08-24 09:32:18Z michal $
* @author Michal Prochowski <michal.prochowski@sote.pl>
*/
/**
* Klasa stOkazjeBackendComponents
*
* @package stOkazjePlugin
* @subpackage actions
*/
class stOkazjeBackendComponents extends autostOkazjeBackendComponents
{
/**
* Generowanie pliku xml
*/
public function executeGenerateXml()
{
$this->generate = false;
if ($this->getRequest()->hasParameter('generate')) $this->generate = true;
$stOkazje = new stOkazje();
$this->steps = $stOkazje->getStepsCount();
}
}

View File

@@ -0,0 +1,90 @@
generator:
class: stAdminGenerator
param:
model_class: Okazje
theme: simple
head:
package: stOkazjePlugin
documentation:
pl: https://www.sote.pl/docs/okazje
en: https://www.soteshop.com/docs/okazje
list:
title: Lista produktów
description: Zarządzanie porównywarką cen Okazje
max_per_page: 20
display: [_code, _product, active]
peer_method: doSelectRightJoinProduct
peer_count_method: doCountRightJoinProduct
actions:
_deletes: {name: Wypisz wszystkie, action: deleteAll, icon: delete}
_add: {name: Przypisz wszystkie, action: addAll}
_generate: {name: Generuj plik xml z przypisanych, action: "@stOkazjePlugin?action=generateCustom&generate=1", icon: export}
object_actions: -
select_actions:
display:
"Ustaw przypisane:": [product_enabled, product_disabled]
actions:
product_enabled: {name: Tak, confirm: "Ustaw przypisane: Tak", action: productEnable, i18n: stOkazjeBackend}
product_disabled: {name: Nie, confirm: "Ustaw przypisane: Nie", action: productDisable, i18n: stOkazjeBackend}
filters:
code: {filter_field: product.code}
product: {filter_field: product.opt_name}
fields:
code: {name: Kod, sort_field: product.code, params: size=50}
product: {name: Nazwa, sort_field: product.opt_name, params: size=50}
active: {name: Przypisany}
menu:
display: [list, generate, config]
fields:
list: {name: Lista produktów, action: @stOkazjePluginDefault}
generate: {name: Generowanie pliku, action: stOkazjeBackend/generateCustom}
config: {name: Konfiguracja, action: stOkazjeBackend/config}
object_actions:
_edit: {action: @stOkazjePlugin?action=edit&id=%%id%%&product_id=%%product_id%%&view=default}
create:
title: Edytuj
edit:
menu: {use: list.menu}
display: [active]
fields:
active: {name: Przypisany}
actions:
_list: {name: Lista}
_save: {name: Zapisz}
forward_parameters: [product_id, view]
build_options:
related_id: forward_parameters.product_id
related_class: Product
generate_model_class: Okazje
custom_actions:
custom: [generate]
generate_custom:
menu: {use: list.menu}
title: Generowanie pliku
description: Zarządzanie porównywarką cen Okazje
config:
title: Konfiguracja
description: Zarządzanie porównywarką cen Okazje
display:
"Ustawienia generowania pliku xml": [use_product_code]
"ADS Tracker": [_ads_tracker_info_befour, ads_tracker, _ads_tracker_info_after]
fields:
use_product_code: {name: Dodaj kod producenta na podstawie kodu produktu, checked: false, type: checkbox}
ads_tracker: {name: Aktywuj, checked: false, type: checkbox}
ads_tracker_info_befour: {name: ""}
ads_tracker_info_after: {name: ""}
actions:
_list: {name: Lista}
_save: {name: Zapisz}
menu: {use: list.menu}

View File

@@ -0,0 +1,5 @@
<?php
class stOkazjeBackendBreadcrumbsBuilder extends autoStOkazjeBackendBreadcrumbsBuilder
{
}

View File

@@ -0,0 +1,18 @@
<?php $config = stConfig::getInstance(sfContext::getInstance(), 'stOkazjeBackend'); ?>
<?php
if ($config->get('ads_tracker')==1 && is_dir(sfConfig::get('sf_plugins_dir')."/appAdsTrackerPlugin")):?>
<?php
$c = new Criteria();
$c->add(AdsTrackerListPeer::PLUGIN_NAME, "okazje");
$AdsTrackerList = AdsTrackerListPeer::doSelectOne($c);
if($AdsTrackerList):
?>
<?php echo __("Przejdź do ADS Trackera, aby obejrzeć raporty"); ?>:
<a href="<?php echo st_url_for('appAdsTrackerBackend/adsTrackerInfoStats/')."?id=".$AdsTrackerList->getId(); ?>"><?php echo __("Okazje"); ?></a>
<?php endif; ?>
<?php endif; ?>

View File

@@ -0,0 +1,23 @@
<?php if (!is_dir(sfConfig::get('sf_plugins_dir')."/appAdsTrackerPlugin")): ?>
<?php echo __("Aby skorzystać z tej funkcji, potrzebujesz aplikacji ADS Tracker"); ?>:
<a target="_blank" href="https://www.sote.pl/ads-tracker.html?hash=e90a50c5a3a683e5e9dcc34a0ce1a2b3"><?php echo __("Zamów aplikację ADS Tracker"); ?></a>
<br/>
<style>
.off, .row_ads_tracker{
color: #999;
}
</style>
<script>
jQuery(function($) {
$("#config_ads_tracker").attr("disabled", true);
$("#config_ads_tracker").prop("checked", false );
});
</script>
<?php endif; ?>
<span class="off"><?php echo __("Raportuj wejścia i rozpoznawaj zamówienia osób, które weszły na stronę z porównywarki Okazje."); ?></span>

View File

@@ -0,0 +1,4 @@
<?php
if ($okazje->getProductId()): ?>
<?php echo st_link_to($okazje->getProduct()->getCode(), 'product/edit?id='.$okazje->getProductId()); ?>
<?php endif; ?>

View File

@@ -0,0 +1,92 @@
<?php
// auto-generated by sfPropelAdmin
// date: 2021/04/21 15:17:35
?>
<?php echo form_tag('stOkazjeBackend/config?culture='.$config->getCulture(), array(
'id' => 'admin_config_form',
'name' => 'admin_config_form',
'class' => 'admin_form',
'multipart' => true,
)) ?>
<fieldset id="sf_fieldset_ustawienia_generowania_pliku_xml" class="">
<h2><?php echo __('Ustawienia generowania pliku xml', null, "stOkazjeBackend") ?></h2>
<div class="content" id="sf_fieldset_ustawienia_generowania_pliku_xml_slide">
<div class="row row_use_product_code">
<?php echo st_admin_get_form_field('config[use_product_code]', __('Dodaj kod producenta na podstawie kodu produktu'), 1, 'checkbox_tag', array('checked' => $config->get('use_product_code'))) ?>
</div>
</div>
</fieldset>
<fieldset id="sf_fieldset_none" class="">
<div class="st_header">
<div>
<h2><?php echo __('Informacje o dostępności produktów'); ?></h2>
</div>
</div>
<div class="content" id="sf_fieldset_none_slide">
<?php
foreach (stOkazje::getAvailabilities() as $availability)
: ?>
<div class="form-row">
<?php echo label_for('config[availability_'.$availability->getId().']', __('Dostępność w sklepie').': "'.$availability->getAvailabilityName().'"', array('style' => 'width: 300px;')); ?>
<div class="content">
<?php echo __('Dostępność w Okazje'); ?>:
<?php echo select_tag('config[availability_'.$availability->getId().']', options_for_select(stOkazje::getOkazjeAvailabilities(), $config->get('availability_'.$availability->getId()))); ?>
<br class="st_clear_all" />
</div>
</div>
<?php endforeach; ?>
</div>
</fieldset>
<fieldset id="sf_fieldset_ads_tracker" class="">
<h2><?php echo __('ADS Tracker', null, "stOkazjeBackend") ?></h2>
<div class="content" id="sf_fieldset_ads_tracker_slide">
<div class="row row_ads_tracker_info_befour">
<label for="config_ads_tracker_info_befour">
<?php echo rtrim(__($labels['config{ads_tracker_info_befour}'], array(), 'stOkazjeBackend'), ':'); ?> </label>
<div class="field<?php if ($sf_request->hasError('config{ads_tracker_info_befour}')): ?> form-error<?php endif; ?>">
<?php if ($sf_request->hasError('config{ads_tracker_info_befour}')): ?>
<?php echo form_error('config{ads_tracker_info_befour}', array('class' => 'form-error-msg')) ?>
<?php endif; ?>
<?php echo st_get_partial('stOkazjeBackend/ads_tracker_info_befour', array('type' => 'config', 'config' => $config, 'forward_parameters' => $forward_parameters)); ?>
</div>
<div class="clr"></div>
</div>
<div class="row row_ads_tracker">
<?php echo st_admin_get_form_field('config[ads_tracker]', __('Aktywuj'), 1, 'checkbox_tag', array('checked' => $config->get('ads_tracker'))) ?>
</div>
<div class="row row_ads_tracker_info_after">
<label for="config_ads_tracker_info_after">
<?php echo rtrim(__($labels['config{ads_tracker_info_after}'], array(), 'stOkazjeBackend'), ':'); ?> </label>
<div class="field<?php if ($sf_request->hasError('config{ads_tracker_info_after}')): ?> form-error<?php endif; ?>">
<?php if ($sf_request->hasError('config{ads_tracker_info_after}')): ?>
<?php echo form_error('config{ads_tracker_info_after}', array('class' => 'form-error-msg')) ?>
<?php endif; ?>
<?php echo st_get_partial('stOkazjeBackend/ads_tracker_info_after', array('type' => 'config', 'config' => $config, 'forward_parameters' => $forward_parameters)); ?>
</div>
<div class="clr"></div>
</div>
</div>
</fieldset>
<div id="config_actions"><?php st_include_partial('config_actions', array('config' => $config, 'forward_parameters' => $forward_parameters)) ?></div>
</form>
<script type="text/javascript">
jQuery(function($) {
$(document).ready(function() {
$('#config_actions').stickyBox();
});
});
</script>

View File

@@ -0,0 +1,10 @@
<?php
if ($sf_request->getParameter('view') == 'product')
{
st_include_partial('stProduct/edit_menu', array('related_object' => $related_object, 'forward_parameters' => $forward_parameters));
}
else
{
include st_admin_get_template_path(__FILE__);
}
?>

View File

@@ -0,0 +1,27 @@
<?php use_helper('stProgressBar'); ?>
<div class="admin_form">
<fieldset >
<div class="content" style="text-align: center;">
<?php
if ($generate)
: ?>
<div id="generateXml">
<?php echo progress_bar('stOkazjeGenerateXml', 'stOkazje', 'generate', $steps); ?>
</div>
<?php else
: ?>
<?php echo __('Wciśnij przycisk "Generuj plik", aby rozpocząć proces tworzenia pliku exportu danych dla Okazje.'); ?> <br>
<?php echo __('Może to potrwać nawet kilka minut w zależności od ilości produktów.'); ?>
<br><br>
<?php echo st_get_admin_button('file', __('Generuj plik'), 'okazje/generateCustom?generate=1', array ('name' => 'sample_file', 'style' => 'text-align:center;')) ?>
<?php endif; ?>
</div>
</fieldset>
</div>

View File

@@ -0,0 +1,13 @@
<?php use_helper('stAdminGenerator'); ?>
<?php $stWebRequest = new stWebRequest(); ?>
<br />
<?php echo __('Plik został wygenerowany i znajduje się pod adresem:') ?>
<br>
<a href="http://<?php echo $stWebRequest->getHost() ?>/uploads/okazje.xml" target="_blank">
http://<?php echo $stWebRequest->getHost() ?>/uploads/okazje.xml
<a>
<br><br>
<?php echo st_get_admin_button('file', 'Pobierz', '/uploads/okazje.xml', array('download'=>null)); ?>

View File

@@ -0,0 +1,4 @@
<?php
if ($okazje->getProductId()): ?>
<?php echo st_link_to($okazje->getProduct()->getName(), 'product/edit?id='.$okazje->getProductId()); ?>
<?php endif; ?>