Files
kupshop/admin/board/board.usersImport.php
2025-08-02 16:30:27 +02:00

179 lines
7.2 KiB
PHP

<?php
$main_class = 'usersImport';
class UsersImport extends Frame
{
use DatabaseCommunication;
protected $template = 'board/usersImport.tpl';
protected $errs = [];
protected $info = [];
protected $added_users = [];
public function get_vars()
{
$vars = parent::get_vars();
$vars['errs'] = $this->errs;
$vars['info'] = $this->info;
$vars['added_users'] = $this->added_users;
return $vars;
}
public function handle()
{
$try = getVal('Try');
$execute = getVal('Execute');
global $cfg;
if (!empty($execute) || (!empty($try))) {
if (!empty($_FILES['file']['tmp_name'])) {
$path = $cfg['Path']['data'].'tmp/users_import.xsl';
move_uploaded_file($_FILES['file']['tmp_name'], $path);
// Increase memory for large files
ini_set('memory_limit', '512M');
$import = new AutomaticImportTransform($path);
$users_array = $import->LoadBinfileAsArray();
/*
* A = jméno
* B = přijmení
* C = společnost
* D = email
* E = telefon
* F = ulice
* G = město
* H = země
* I = psč
* J = skupiny
* K = newsletter
* L = ICO
* M = DIC
* N = delivery name
* O = delivery surname
* P = delivery firm
* Q = delivery street
* R = delivery city
* S = delivery zip
* T = delivery_country
*/
$errs = [];
$added = 0;
$price_levels = sqlFetchAll(sqlQueryBuilder()->select('id, name')->from('price_levels')->execute(), ['id' => 'name']);
foreach (reset($users_array) as $index => $user) {
if ($index == 1) {
continue;
}
if (!empty($user['D'])) {
if (filter_var($user['D'], FILTER_VALIDATE_EMAIL)) {
$groups = [];
if (!empty($user['K'])) {
$groups = explode(';', str_replace(' ', '', $user['K']));
}
$fields = ['figure' => 'N'];
if (!empty($user['A'])) {
$fields['name'] = $user['A'];
}
if (!empty($user['B'])) {
$fields['surname'] = $user['B'];
}
if (!empty($user['C'])) {
$fields['firm'] = $user['C'];
}
if (!empty($user['E'])) {
$fields['phone'] = $user['E'];
}
if (!empty($user['F'])) {
$fields['street'] = $user['F'];
}
if (!empty($user['G'])) {
$fields['city'] = $user['G'];
}
if (!empty($user['H'])) {
$fields['zip'] = $user['H'];
}
if (!empty($user['I'])) {
$fields['state'] = $user['I'];
}
if (!empty($user['J'])) {
$fields['country'] = $user['J'];
}
if (!empty($user['L'])) {
$fields['get_news'] = ($user['L'] == 'ano') ? 'Y' : 'N';
}
if (!empty($user['M'])) {
$fields['ico'] = $user['M'];
}
if (!empty($user['N'])) {
$fields['dic'] = $user['N'];
}
if (!empty($user['O'])) {
$fields['delivery_name'] = $user['O'];
}
if (!empty($user['P'])) {
$fields['delivery_surname'] = $user['P'];
}
if (!empty($user['Q'])) {
$fields['delivery_firm'] = $user['Q'];
}
if (!empty($user['R'])) {
$fields['delivery_street'] = $user['R'];
}
if (!empty($user['S'])) {
$fields['delivery_city'] = $user['S'];
}
if (!empty($user['T'])) {
$fields['delivery_zip'] = $user['T'];
}
if (!empty($user['U'])) {
$fields['delivery_state'] = $user['U'];
}
if (!empty($user['V'])) {
$fields['delivery_country'] = $user['V'];
}
$price_level = null;
if (!empty($user['W'])) { // cenová hladina
$price_level = array_search(trim($user['W']), $price_levels);
}
if (empty($try)) {
$confirmed = false;
if (getVal('newsletter_confirm')) {
$confirmed = true;
}
$user['id'] = addUserEmail($user['D'], $groups, $fields, $confirmed);
if ($price_level) {
sqlQuery("REPLACE INTO users_dealer_price_level (id_user, id_price_level)
VALUES ('{$user['id']}', '{$price_level}')");
}
} else {
$fields['email'] = $user['D'];
$fields['groups'] = $groups;
$fields['price_level'] = ($price_level ? $price_level.' - '.$user['W'] : '');
$this->added_users[] = $fields;
}
++$added;
} else {
$errs[$index] = "Nevalidní email {$user['D']}";
}
} else {
$errs[$index] = 'Prázdný email - uživatel nemůže být přidán';
}
}
$info['test'] = !empty($try) ? 1 : 2;
$info['added'] = $added;
$this->info = $info;
$this->errs = $errs;
}
}
}
}