179 lines
7.2 KiB
PHP
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;
|
|
}
|
|
}
|
|
}
|
|
}
|