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

273 lines
8.2 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 NewsletterProGenerateCustomers
{
private $id_shop;
private $id_shop_group;
private $id_lang;
private $id_gender;
private $email_prefix = 'demo.com';
public function __construct()
{
ini_set('max_execution_time', '15000');
$this->id_shop = [];
$this->id_shop_group = [];
$this->id_lang = [];
$this->id_gender = [];
foreach (Shop::getShops() as $value) {
$this->id_shop[] = (int) $value['id_shop'];
}
foreach (ShopGroup::getShopGroups() as $value) {
$this->id_shop_group[] = (int) $value->id;
}
foreach (Language::getLanguages() as $value) {
$this->id_lang[] = (int) $value['id_lang'];
}
foreach (Gender::getGenders() as $value) {
$this->id_gender[] = (int) $value->id;
}
}
public static function newInstance()
{
return new self();
}
public function generate($customers, $visitors, $visitors_np, $added)
{
$sum = 0;
$sum += $this->generateCustomers($customers);
$sum += $this->generateVisitors($visitors);
$sum += $this->generateVisitorsNp($visitors_np);
$sum += $this->generateAdded($added);
return $sum;
}
public function generateCustomers($num)
{
$sum = 0;
for ($i = 0; $i < $num; ++$i) {
$email = $this->getEmail();
$firstname = $this->getFirstNameFromEmail($email);
$lastname = $this->getLastNameFromEmail($email);
$customer = new Customer();
$customer->id_shop = $this->getIdShop();
$customer->id_shop_group = $this->getIdShopGroup($customer->id_shop);
$customer->note = 'sas';
$customer->id_gender = $this->getIdGender();
$customer->id_default_group = $this->getDefaultGroup();
$customer->id_lang = $this->getIdLang();
$customer->lastname = $firstname;
$customer->firstname = $lastname;
$customer->birthday = date('Y-m-d');
$customer->email = $email;
$customer->newsletter = 1;
$customer->ip_registration_newsletter = '127.0.0.1';
$customer->newsletter_date_add = '2013-06-17 19:28:06';
$customer->website = 'www.nowebsite.com';
$customer->company = 'freelancer';
$customer->show_public_prices = 1;
$customer->id_risk = 0;
$customer->passwd = 'abcdefghijklmnoprstuvxyz';
$customer->active = 1;
$customer->is_guest = 0;
$customer->deleted = 0;
$customer->date_add = date('Y-m-d H:i:s');
$customer->date_upd = date('Y-m-d H:i:s');
if ($customer->save()) {
++$sum;
}
}
return $sum;
}
public function generateVisitors($num)
{
$sum = 0;
if (NewsletterProTools::tableExists('newsletter')) {
for ($i = 0; $i < $num; ++$i) {
$id_shop = $this->getIdShop();
$sql = 'INSERT INTO `'._DB_PREFIX_.'newsletter`
(`id_shop`, `id_shop_group`, `email`, `newsletter_date_add`, `ip_registration_newsletter`, `http_referer`, `active`)
VALUES
('.(int) $id_shop.', '.(int) $this->getIdShopGroup($id_shop).", '".pSQL($this->getEmail())."', NULL, '127.0.0.1', NULL, 1);";
if (Db::getInstance()->execute($sql)) {
++$sum;
}
}
} elseif (NewsletterProTools::tableExists('emailsubscription')) {
for ($i = 0; $i < $num; ++$i) {
$id_shop = $this->getIdShop();
$sql = 'INSERT INTO `'._DB_PREFIX_.'emailsubscription`
(`id_shop`, `id_shop_group`, `email`, `newsletter_date_add`, `ip_registration_newsletter`, `http_referer`, `active`)
VALUES
('.(int) $id_shop.', '.(int) $this->getIdShopGroup($id_shop).", '".pSQL($this->getEmail())."', NULL, '127.0.0.1', NULL, 1);";
if (Db::getInstance()->execute($sql)) {
++$sum;
}
}
}
return $sum;
}
public function generateVisitorsNp($num)
{
$sum = 0;
for ($i = 0; $i < $num; ++$i) {
$email = $this->getEmail();
$id_shop = $this->getIdShop();
$sql = 'INSERT INTO `'._DB_PREFIX_.'newsletter_pro_subscribers`
(`id_shop`, `id_shop_group`, `id_lang`, `id_gender`, `firstname`, `lastname`, `email`, `birthday`, `ip_registration_newsletter`, `list_of_interest`, `date_add`, `active`)
VALUES
('.(int) $id_shop.', '.(int) $this->getIdShopGroup($id_shop).', '.(int) $this->getIdLang().', '.(int) $this->getIdGender().', "'.pSQL($this->getFirstNameFromEmail($email)).'", "'.pSQL($this->getLastNameFromEmail($email)).'", "'.pSQL($email).'", "'.pSQL(date('Y-m-d')).'", "'.pSQL('127.0.0.1').'", NULL, "'.pSQL(date('Y-m-d H:i:s')).'", 1)';
if (Db::getInstance()->execute($sql)) {
++$sum;
}
}
return $sum;
}
public function generateAdded($num)
{
$sum = 0;
for ($i = 0; $i < $num; ++$i) {
$email = $this->getEmail();
$id_shop = $this->getIdShop();
$sql = 'INSERT INTO `'._DB_PREFIX_.'newsletter_pro_email`
(`id_shop`, `id_shop_group`, `id_lang`, `firstname`, `lastname`, `email`, `date_add`, `ip_registration_newsletter`, `active`)
VALUES
('.(int) $id_shop.', '.(int) $this->getIdShopGroup($id_shop).', '.(int) $this->getIdLang().", '".pSQL($this->getFirstNameFromEmail($email))."', '".pSQL($this->getLastNameFromEmail($email))."', '".pSQL($email)."', NULL, '127.0.0.1', 1 );";
if (Db::getInstance()->execute($sql)) {
++$sum;
}
}
return $sum;
}
private function getIdShop()
{
return $this->random($this->id_shop);
}
private function getIdShopGroup($id_shop)
{
$shop = new Shop($id_shop);
if (Validate::isLoadedObject($shop)) {
return (int) $shop->id_shop_group;
}
return $this->id_shop_group[0];
}
private function getDefaultGroup()
{
return (int) Configuration::get('PS_CUSTOMER_GROUP');
}
private function getIdRandomShopGroup()
{
return $this->random($this->id_shop_group);
}
private function getIdLang()
{
return $this->random($this->id_lang);
}
private function getIdGender()
{
return $this->random($this->id_gender);
}
private function getEmail()
{
$upper = 'ABCDEFGHIJKLMNOPRSTUVXYZ';
$lower = 'abcdefghijklmnoprstuvxyz';
$firstname = Tools::substr(str_shuffle($upper), 0, 1).Tools::substr(str_shuffle($lower), 0, rand(5, 8));
$lastname = Tools::substr(str_shuffle($upper), 0, 1).Tools::substr(str_shuffle($lower), 0, rand(5, 8));
$email = Tools::strtolower($firstname).'.'.Tools::strtolower($lastname).'@'.$this->email_prefix;
return $email;
}
private function getFirstNameFromEmail($email)
{
if (preg_match('/^(\w+)\.(\w+)/', $email, $match)) {
return Tools::ucfirst($match[1]);
}
return 'Unknown';
}
private function getLastNameFromEmail($email)
{
if (preg_match('/^(\w+)\.(\w+)/', $email, $match)) {
return Tools::ucfirst($match[2]);
}
return 'Unknown';
}
private function getName()
{
$upper = 'ABCDEFGHIJKLMNOPRSTUVXYZ';
$lower = 'abcdefghijklmnoprstuvxyz';
$name = Tools::substr(str_shuffle($upper), 0, 1).Tools::substr(str_shuffle($lower), 0, rand(5, 8));
return $name;
}
private function random($object)
{
return rand($object[0], $object[count($object) - 1]);
}
}