Files
wyczarujprezent.pl/modules/ecsgtmpro/classes/config/EcsGtmProGtmGeneralConfig.php
2024-10-28 22:14:22 +01:00

160 lines
5.1 KiB
PHP

<?php
/**
* 2022 ECSoft
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to dev.ecsoft@gmail.com so we can send you a copy immediately.
*
* @author ECSoft <dev.ecsoft@gmail.com>
* @copyright 2022 ECSoft
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of ECSoft
*/
include_once dirname(__FILE__) . '/EcsGtmProModelAbstract.php';
class EcsGtmProGtmGeneralConfig extends EcsGtmProModelAbstract
{
public $enable;
public $exclude_internal;
public $gtm_id;
public $format;
public $resend_orders;
public $max_resend;
public $max_category;
public $sandbox;
public $allowed_ips;
public $debug;
public function attributeTypes()
{
return array(
'gtm_id' => 'text',
'format' => 'select',
'max_resend' => 'text',
'max_category' => 'text',
'allowed_ips' => 'textarea',
);
}
public function attributeDefaults()
{
return array(
'enable' => 1,
'exclude_internal' => 1,
'format' => 'ga4',
'resend_orders' => 1,
'max_resend' => 7,
'max_category' => 30,
);
}
public function formatSelectOptions()
{
return array(
array(
'id' => 'gau',
'name' => $this->l('Universal Google Analytics'),
),
array(
'id' => 'ga4',
'name' => $this->l('Google Analytics 4'),
),
);
}
public function attributeLabels()
{
return array(
'enable' => $this->l('Enable Google Tag Manager', 'EcsGtmProGtmGeneralConfig'),
'exclude_internal' => $this->l('Exclude internal traffic', 'EcsGtmProGtmGeneralConfig'),
'gtm_id' => $this->l('Google Tag Manager ID', 'EcsGtmProGtmGeneralConfig'),
'format' => $this->l('Google Tag DataLayer format', 'EcsGtmProGtmGeneralConfig'),
'resend_orders' => $this->l('Re-send orders automatically', 'EcsGtmProGtmGeneralConfig'),
'max_resend' => $this->l('Maximum period to re-send orders', 'EcsGtmProGtmGeneralConfig'),
'max_category' => $this->l('Maximum category entries in datalayer', 'EcsGtmProGtmGeneralConfig'),
'sandbox' => $this->l('Sandbox mode', 'EcsGtmProGtmGeneralConfig'),
'allowed_ips' => $this->l('Allowed IPs', 'EcsGtmProGtmGeneralConfig'),
'debug' => $this->l('Debug mode', 'EcsGtmProGtmGeneralConfig'),
);
}
public function fieldSuffix()
{
return array(
'max_resend' => $this->l('days', 'EcsGtmProGtmGeneralConfig'),
);
}
public function attributePlaceholders()
{
return array(
'gtm_id' => 'GTM-XXXXXX',
);
}
public function attributeDescriptions()
{
return array(
'resend_orders' => $this->l('Re-send orders if order was not sent.', 'EcsGtmProGtmGeneralConfig'),
'max_resend' => $this->l('Maximum number of days after the order has been placed to re-send it.', 'EcsGtmProGtmGeneralConfig'),
'max_category' => $this->l('Maximum number of items sent to datalayer in category pages. If ou have big product name, please lower this value so the datalayer does not exceed size limit.', 'EcsGtmProGtmGeneralConfig'),
'sandbox' => $this->l('Enable module on allowed IPs only.', 'EcsGtmProGtmGeneralConfig'),
'allowed_ips' => $this->l('One IP per line.', 'EcsGtmProGtmGeneralConfig'),
'debug' => $this->l('Show debug pannel. You can also turn debug mode using XDebug helper plugin for browser.', 'EcsGtmProGtmGeneralConfig'),
);
}
public function rules()
{
return array(
array(
array(
'enable',
'exclude_internal',
'gtm_id',
'format',
'resend_orders',
'max_resend',
'max_category',
'sandbox',
'allowed_ips',
'debug',
), 'safe'
),
array(
array(
'gtm_id'
), 'validateRequired'
),
array(
array(
'max_resend',
'max_category',
), 'validateInteger'
)
);
}
public function validateInteger($value)
{
return Validate::isInt($value) || preg_match('/^\d+$/is', $value);
}
public function configKey()
{
return 'ecsgtm_general';
}
public function getActiveTab()
{
return 'EcsGtmProGtmConfig';
}
}