Files
b2b.redline.com.pl/modules/newsletterpro/classes/NewsletterProMailChimpToken.php
2025-06-24 14:14:35 +02:00

142 lines
3.5 KiB
PHP

<?php
/**
* Since 2013 Ovidiu Cimpean.
*
* Ovidiu Cimpean - Newsletter Pro © All rights reserved.
*
* DISCLAIMER
*
* Do not edit, modify or copy this file.
* If you wish to customize it, contact us at addons4prestashop@gmail.com.
*
* @author Ovidiu Cimpean <addons4prestashop@gmail.com>
* @copyright Since 2013 Ovidiu Cimpean
* @license Do not edit, modify or copy this file
*
* @version Release: 4
*/
class NewsletterProMailChimpToken extends ObjectModel
{
public $token;
public $creation_date;
public $modified_date;
public $expiration_date;
public static $token_static;
public static $definition = [
'table' => 'newsletter_pro_mailchimp_token',
'primary' => 'id_newsletter_pro_mailchimp_token',
'fields' => [
'token' => ['type' => self::TYPE_STRING, 'validate' => 'isString', 'required' => true],
'creation_date' => ['type' => self::TYPE_DATE, 'validate' => 'isDate'],
'modified_date' => ['type' => self::TYPE_DATE, 'validate' => 'isDate'],
'expiration_date' => ['type' => self::TYPE_DATE, 'validate' => 'isDate'],
],
];
public function __construct($id = null)
{
parent::__construct($id);
}
public static function newInstance($id = null)
{
return new self($id);
}
public static function getInstanceByToken($token)
{
$id = (int) Db::getInstance()->getValue('
SELECT `id_newsletter_pro_mailchimp_token`
FROM `'._DB_PREFIX_.'newsletter_pro_mailchimp_token`
WHERE `token` = "'.pSQL($token).'"
');
$instance = self::newInstance($id);
if (Validate::isLoadedObject($instance)) {
return $instance;
}
return false;
}
public static function generateToken()
{
return Tools::encrypt(uniqid() + time());
}
public static function generateDayToken()
{
return Tools::encrypt('mailchimp'.date('Y-m-d'));
}
public static function generateHourToken()
{
return Tools::encrypt('mailchimp'.date('Y-m-d H'));
}
public static function generateMinuteToken()
{
return Tools::encrypt('mailchimp'.date('Y-m-d H:i'));
}
public static function getToken()
{
if (!isset(self::$token_static)) {
self::$token_static = self::generateToken();
}
return self::$token_static;
}
public function add($auto_date = true, $null_values = false)
{
$this->updateDates();
return parent::add($auto_date, $null_values);
}
public function update($null_values = false)
{
$this->updateDates();
return parent::update($null_values);
}
private function updateDates()
{
if (isset($this->creation_date) || !$this->creation_date) {
$this->creation_date = date('Y-m-d H:i:s');
}
$this->modified_date = date('Y-m-d H:i:s');
$this->expiration_date = date('Y-m-d H:i:s', strtotime('+1 month'));
}
public function expired()
{
return strtotime($this->expiration_date) < time();
}
public static function validateToken($token_var = 'mc_token')
{
if (Tools::isSubmit($token_var)) {
$mc_token = NewsletterProMailChimpToken::getInstanceByToken(Tools::getValue($token_var));
if ($mc_token) {
if ($mc_token->expired()) {
$mc_token->delete();
} else {
return true;
}
}
}
return false;
}
}