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

183 lines
5.6 KiB
PHP

<?php
class appAdsTrackerWidgetBackendActions extends stGadgetActions
{
public function executeAdsTrackerEnteringWidget()
{
$request = $this->getRequest();
$i18n = $this->getContext()->getI18N();
$context = $this->getContext();
$this->config = stConfig::getInstance($context);
$this->config->setCulture($this->getRequestParameter('culture', stLanguage::getOptLanguage()));
$currency_config = stConfig::getInstance($this->getContext(), 'stCurrencyPlugin');
$this->default_currency = $currency_config->get('default_currency');
if (!appAdsTracker::getIsAdsTrackerActive()) {
$i18n = $this->getContext()->getI18n();
$notice = $i18n->__('Moduł analizy reklam nie jest aktywny i nie zbiera danych.')."&nbsp;".$i18n->__('Aby go aktywować przejdź do konfiguracji modułu.')."&nbsp;".'<a href="'.$this->getController()->genUrl("appAdsTrackerBackend/config").'" target="_blank">'.$i18n->__('Konfiguracja').'</a>';
$this->setFlash("info", $notice, false);
}
$filters = $this->getFiltersEntering();
$this->from_date = $filters['from_date'];
$this->to_date = $filters['to_date'];
$this->getUser()->setAttribute("filters", $filters, 'soteshop/appAdsTrackerPlugin');
$result = appAdsTracker::getReportsPlatformEnteringValue($filters);
$this->result = $result;
$this->filters = $filters;
$this->periods = $this->getPeriods();
$this->platforms = $this->getPlatforms();
//$this->labels = $this->getLabels();
}
protected function getFiltersEntering()
{
$config = stConfig::getInstance($this->getContext(), 'appAdsTrackerBackend');
$filters = $this->getRequestParameter('filters', $this->getDefaultFiltersEntering());
$periods_array = $this->getDateFromPeriods($filters['period']);
$filters['from_date'] = $periods_array['from']." 00:00:00";
$filters['to_date'] = $periods_array['to']." 23:59:59";
$filters_default = json_decode($config->get('platform_entering_default_view'));
foreach ($filters_default as $platform_label => $platform_id) {
$filters['platform'][$platform_label] = $platform_id;
}
if ($this->getRequest()->hasParameter('filters')) {
$config = stConfig::getInstance('appAdsTrackerBackend');
$config->set('entering_widget_period', $filters['period']);
$config->save();
}
return $filters;
}
protected function getDefaultFiltersEntering()
{
$config = stConfig::getInstance($this->getContext(), 'appAdsTrackerBackend');
$filters_platform = json_decode($config->get('platform_entering_default_view'),true);
$filters_period = $config->get('entering_widget_period');
if ($filters_period!="") {
$periods_array = $this->getDateFromPeriods($filters_period);
$default_date_from = $periods_array['from']." 00:00:00";
$default_date_to = $periods_array['to']." 23:59:59";
}
if (is_array($filters_platform)) {
return array('from_date' => $default_date_from, 'to_date' => $default_date_to, 'platform'=>$filters_platform, 'period'=>$filters_period );
}
$c = new Criteria();
$c->add(AdsTrackerPlatformPeer::IS_ACTIVE, 1);
$c->add(AdsTrackerPlatformPeer::IS_SYSTEM_DEFAULT, 1);
$platform = AdsTrackerPlatformPeer::doSelectOne($c);
if ($platform) {
return array('from_date' => $default_date_from, 'to_date' => $default_date_to, 'platform'=>array($platform->getAdsName()=>$platform->getId()), 'period'=>$filters_period);
} else {
return array('from_date' => $default_date_from, 'to_date' => $default_date_to, 'period'=>$filters_period);
}
}
public function getDateFromPeriods($period)
{
$date['from'] = "";
$date['to'] = "";
if ($period=="14day") {
$date['from'] = date("Y-m-d", strtotime('-14 day'));
$date['to'] = date("Y-m-d", strtotime('-1 day'));
}
if ($period=="30day") {
$date['from'] = date("Y-m-d", strtotime('-30 day'));
$date['to'] = date("Y-m-d", strtotime('-1 day'));
}
if ($period=="month") {
$date['from'] = date("Y-m-d", strtotime('first day of this month'));
$date['to'] = date("Y-m-d", strtotime('today'));
}
if ($period=="custom") {
}
return $date;
}
public function getPeriods()
{
$i18n = $this->getContext()->getI18N();
// Dzisiaj
// Wczoraj
// Ostatnie 7 dni
// Ostatnie 14 dni
// Ostatnie 30 dni
// Ostatnie 90 dni
// Bieżący miesiąc
// Poprzedni miesiąc
return array(
'14day' => $i18n->__('Ostatnie 14 dni'),
'30day' => $i18n->__('Ostatnie 30 dni'),
'month' => $i18n->__('Bieżący miesiąc'),
);
}
public function getPlatforms()
{
//pobieranie platform
$c = new Criteria();
$c->add(AdsTrackerPlatformPeer::IS_ACTIVE, 1);
$platforms = AdsTrackerPlatformPeer::doSelect($c);
if ($platforms) {
foreach ($platforms as $platform) {
$my_platform[$platform->getId()] = $platform->getAdsName();
}
return $my_platform;
}
}
}