1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
csv.php
См. документацию.
1
<?php
2
namespace
Bitrix\Translate\Controller\Import
;
3
4
use
Bitrix\Main
;
5
use
Bitrix\Main\Error
;
6
use
Bitrix\Main\Localization\Loc
;
7
use
Bitrix\Translate
;
8
9
10
class
Csv
11
extends
Translate\Controller\Controller
12
implements
Translate\Controller\IProcessParameters
13
{
14
use
Translate\Controller\ProcessParams
;
15
16
const
SETTING_ID
=
'TRANSLATE_IMPORT'
;
17
18
const
ACTION_IMPORT
=
'import'
;
19
const
ACTION_PURGE
=
'purge'
;
20
const
ACTION_CANCEL
=
'cancel'
;
21
const
ACTION_UPLOAD
=
'upload'
;
22
const
ACTION_INDEX
=
'index'
;
23
const
ACTION_FINALIZE
=
'finalize'
;
24
25
const
METHOD_ADD_UPDATE
=
'ADD_UPDATE'
;
26
const
METHOD_UPDATE_ONLY
=
'UPDATE_ONLY'
;
27
const
METHOD_ADD_ONLY
=
'ADD_ONLY'
;
28
30
private
$tabId = 0;
31
33
private
$encodingIn;
34
36
private
$updateMethod;
37
39
private
$languages;
40
42
private
$csvFilePath;
43
45
private
$reindex;
46
47
48
54
public
function
configureActions
()
55
{
56
$configureActions = parent::configureActions();
57
$permission =
new
Translate\Controller\CheckPermission
(
Translate
\
Permission::WRITE
);
58
59
$configureActions[self::ACTION_UPLOAD] = [
60
'+prefilters'
=> [
61
new
Main\Engine\ActionFilter\HttpMethod
([
Main
\
Engine
\ActionFilter\HttpMethod::METHOD_POST]),
62
$permission
63
],
64
];
65
$configureActions[self::ACTION_IMPORT] = [
66
'+prefilters'
=> [
67
$permission
68
],
69
];
70
$configureActions[self::ACTION_PURGE] = [
71
'+prefilters'
=> [
72
$permission
73
],
74
];
75
$configureActions[self::ACTION_CANCEL] = [
76
'+prefilters'
=> [
77
$permission
78
],
79
];
80
$configureActions[self::ACTION_FINALIZE] = [
81
'+prefilters'
=> [
82
$permission
83
],
84
];
85
$configureActions[self::ACTION_INDEX] = [
86
'+prefilters'
=> [
87
new
Translate\Controller\CheckPermission
(
Translate
\
Permission::READ
)
88
],
89
];
90
91
return
$configureActions;
92
}
93
94
101
protected
function
init
()
102
{
103
parent::init();
104
105
$tabId = $this->request->get(
'tabId'
);
106
if
(empty($tabId) || (
int
)$tabId <= 0)
107
{
108
throw
new
Main\ArgumentException
(
"Missing 'tabId' parameter"
);
109
}
110
$this->tabId = (int)$tabId;
111
112
$this->
keepField
([
'encodingIn'
,
'updateMethod'
,
'csvFilePath'
,
'languages'
]);
113
$params
= $this->
getProgressParameters
();
114
115
// languages
116
$this->languages =
Translate\Config::getEnabledLanguages
();
117
118
// encoding
119
$enc = $this->request->get(
'encodingIn'
);
120
if
($enc !==
null
&& \in_array(\mb_strtolower($enc),
Translate
\Config::getAllowedEncodings()))
121
{
122
$this->encodingIn = \mb_strtolower($enc);
123
}
124
elseif
(isset(
$params
[
'encodingIn'
]) && \in_array(
$params
[
'encodingIn'
],
Translate
\Config::getAllowedEncodings()))
125
{
126
$this->encodingIn =
$params
[
'encodingIn'
];
127
}
128
129
// update method
130
$updateMethod = $this->request->get(
'updateMethod'
);
131
if
($updateMethod !==
null
)
132
{
133
if
(\in_array($updateMethod, [self::METHOD_ADD_ONLY, self::METHOD_UPDATE_ONLY, self::METHOD_ADD_UPDATE]))
134
{
135
$this->updateMethod = $updateMethod;
136
}
137
}
138
if
(empty($this->updateMethod) && isset(
$params
[
'updateMethod'
]))
139
{
140
$this->updateMethod =
$params
[
'updateMethod'
];
141
}
142
if
(empty($this->updateMethod))
143
{
144
$this->updateMethod = self::METHOD_ADD_ONLY;
145
}
146
147
// update index
148
$reindex = $this->request->get(
'reindex'
);
149
$this->reindex = ($reindex ===
'Y'
);
150
151
// file to import
152
if
(isset(
$params
[
'csvFilePath'
]))
153
{
154
$this->csvFilePath =
$params
[
'csvFilePath'
];
155
}
156
157
$this->
saveProgressParameters
();
158
}
159
160
166
public
function
importAction
():
array
167
{
168
$action
=
new
Translate\Controller\Import\ImportCsv
(
169
self::ACTION_IMPORT,
170
$this,
171
[
172
'tabId'
=> $this->tabId,
173
'encodingIn'
=> $this->encodingIn,
174
'updateMethod'
=> $this->updateMethod,
175
'csvFilePath'
=> $this->csvFilePath,
176
]
177
);
178
179
$result
=
$action
->run(
true
);
180
181
if
(\
count
(
$action
->getErrors()) > 0)
182
{
183
$this->
addErrors
(
$action
->getErrors());
184
}
185
186
if
(
$action
instanceof
Translate
\
Controller
\
ITimeLimit
)
187
{
188
if
(
$action
->hasProcessCompleted() &&
$result
[
'TOTAL_ITEMS'
] == 0)
189
{
190
$result
[
'SUMMARY'
] = Loc::getMessage(
'TR_IMPORT_VOID'
);
191
}
192
else
193
{
194
$messagePlaceholders = [
195
'#TOTAL_PHRASES#'
=>
$result
[
'TOTAL_ITEMS'
],
196
'#PROCESSED_PHRASES#'
=>
$result
[
'PROCESSED_ITEMS'
],
197
];
198
if
(
$action
->hasProcessCompleted())
199
{
200
$result
[
'SUMMARY'
] =
201
Loc::getMessage(
'TR_IMPORT_COMPLETED'
).
"\n"
.
202
Loc::getMessage(
'TR_IMPORT_ACTION_STATS'
, $messagePlaceholders);
203
}
204
else
205
{
206
$result
[
'SUMMARY'
] = Loc::getMessage(
'TR_IMPORT_ACTION_STATS'
, $messagePlaceholders);
207
}
208
}
209
}
210
else
211
{
212
if
(
$result
[
'TOTAL_ITEMS'
] == 0)
213
{
214
$result
[
'SUMMARY'
] = Loc::getMessage(
'TR_IMPORT_VOID'
);
215
}
216
else
217
{
218
$messagePlaceholders = [
219
'#TOTAL_PHRASES#'
=>
$result
[
'TOTAL_ITEMS'
],
220
'#PROCESSED_PHRASES#'
=>
$result
[
'PROCESSED_ITEMS'
],
221
];
222
223
$result
[
'SUMMARY'
] =
224
Loc::getMessage(
'TR_IMPORT_COMPLETED'
).
"\n"
.
225
Loc::getMessage(
'TR_IMPORT_ACTION_STATS'
, $messagePlaceholders);
226
}
227
}
228
229
return
$result
;
230
}
231
237
public
function
indexAction
():
array
238
{
239
if
($this->reindex !==
true
)
240
{
241
return
[
242
'STATUS'
=>
Translate\Controller\STATUS_COMPLETED
,
243
'SUMMARY'
=> Loc::getMessage(
'TR_IMPORT_COMPLETED'
)
244
];
245
}
246
247
$action
=
new
Translate\Controller\Import\IndexCsv
(
248
self::ACTION_INDEX,
249
$this,
250
[
251
'tabId'
=> $this->tabId,
252
'csvFilePath'
=> $this->csvFilePath,
253
]
254
);
255
256
$result
=
$action
->run(
true
);
257
258
if
(\
count
(
$action
->getErrors()) > 0)
259
{
260
$this->
addErrors
(
$action
->getErrors());
261
}
262
263
if
(
$action
instanceof
Translate
\
Controller
\
ITimeLimit
)
264
{
265
if
(
$action
->hasProcessCompleted())
266
{
267
$result
[
'SUMMARY'
] = Loc::getMessage(
'TR_IMPORT_COMPLETED'
);
268
}
269
else
270
{
271
$messagePlaceholders = [
272
'#TOTAL_FILES#'
=>
$result
[
'TOTAL_ITEMS'
],
273
'#PROCESSED_FILES#'
=>
$result
[
'PROCESSED_ITEMS'
],
274
];
275
$result
[
'SUMMARY'
] = Loc::getMessage(
'TR_INDEX_ACTION_STATS'
, $messagePlaceholders);
276
}
277
}
278
else
279
{
280
$result
[
'SUMMARY'
] = Loc::getMessage(
'TR_IMPORT_COMPLETED'
);
281
}
282
283
return
$result
;
284
}
285
286
292
public
function
uploadAction
():
array
293
{
294
$result
= [];
295
$success
=
false
;
296
if
(
297
isset($_FILES[
'csvFile'
], $_FILES[
'csvFile'
][
'tmp_name'
])
298
&& ($_FILES[
'csvFile'
][
'error'
] == 0)
299
&& \file_exists($_FILES[
'csvFile'
][
'tmp_name'
])
300
)
301
{
302
if
(
303
(\filesize($_FILES[
'csvFile'
][
'tmp_name'
]) > 0)
304
&& (\mb_substr($_FILES[
'csvFile'
][
'name'
], -4) ===
'.csv'
)
305
)
306
{
307
if
($this->moveUploadedFile($_FILES[
'csvFile'
],
'.csv'
))
308
{
309
$this->
saveProgressParameters
();
310
$success
=
true
;
311
}
312
}
313
else
314
{
315
$this->
addError
(
new
Main
\
Error
(Loc::getMessage(
'TR_IMPORT_EMPTY_FILE_ERROR'
)));
316
}
317
}
318
else
319
{
320
$this->
addError
(
new
Main
\
Error
(Loc::getMessage(
'TR_IMPORT_EMPTY_FILE_ERROR'
)));
321
}
322
323
if
(
$success
)
324
{
325
$result
[
'SUMMARY'
] = Loc::getMessage(
'TR_IMPORT_UPLOAD_OK'
);
326
}
327
328
$result
[
'STATUS'
] =
Translate\Controller\STATUS_COMPLETED
;
329
330
return
$result
;
331
}
332
333
343
private
function
moveUploadedFile($postedFile, $suffix =
'.csv'
, $timeToLive = 3): bool
344
{
345
if
(
346
isset($postedFile[
'tmp_name'
])
347
&& \file_exists($postedFile[
'tmp_name'
])
348
)
349
{
351
$tmpFile = Translate\IO\CsvFile::generateTemporalFile(
'translate'
, $suffix, $timeToLive);
352
if
(@\copy($postedFile[
'tmp_name'
], $tmpFile->getPhysicalPath()))
353
{
354
$this->csvFilePath = $tmpFile->getPhysicalPath();
355
return
true
;
356
}
357
}
358
359
$this->
addError
(
new
Main
\
Error
(Loc::getMessage(
'TR_IMPORT_EMPTY_FILE_ERROR'
)));
360
361
return
false
;
362
}
363
364
372
public
function
cancelAction
($tabId):
array
373
{
374
$result
= $this->
purgeAction
($tabId);
375
$result
[
'SUMMARY'
] = Loc::getMessage(
'TR_IMPORT_ACTION_CANCEL'
);
376
377
return
$result
;
378
}
379
380
389
public
function
purgeAction
($tabId):
array
390
{
391
if
(empty($tabId) || (
int
)$tabId <= 0)
392
{
393
throw
new
Main\ArgumentException
(
"Missing 'tabId' parameter"
);
394
}
395
396
$settings
= $this->
getProgressParameters
();
397
398
if
(!empty(
$settings
[
'csvFilePath'
]))
399
{
400
$path
=
new
Main\IO\File
(
$settings
[
'csvFilePath'
]);
401
if
(
$path
->isExists())
402
{
403
$path
->delete();
404
}
405
}
406
407
$this->
clearProgressParameters
();
408
409
return
[
410
'SUMMARY'
=> Loc::getMessage(
'TR_IMPORT_FILE_DROPPED'
),
411
'STATUS'
=>
Translate\Controller\STATUS_COMPLETED
412
];
413
}
414
420
public
function
finalizeAction
():
array
421
{
422
$settings
= $this->
getProgressParameters
();
423
424
if
(!empty(
$settings
[
'csvFilePath'
]))
425
{
426
$path
=
new
Main\IO\File
(
$settings
[
'csvFilePath'
]);
427
if
(
$path
->isExists())
428
{
429
$path
->delete();
430
}
431
}
432
433
$this->
clearProgressParameters
();
434
435
return
[
436
'STATUS'
=>
Translate\Controller\STATUS_COMPLETED
437
];
438
}
439
}
$path
$path
Определения
access_edit.php:21
Bitrix\Main\ArgumentException
Определения
ArgumentException.php:9
Bitrix\Main\Engine\ActionFilter\HttpMethod
Определения
httpmethod.php:13
Bitrix\Main\Engine\Controller\addError
addError(Error $error)
Определения
controller.php:1070
Bitrix\Main\Engine\Controller\addErrors
addErrors(array $errors)
Определения
controller.php:1083
Bitrix\Main\Error
Определения
error.php:15
Bitrix\Main\Localization\Loc
Определения
loc.php:12
Bitrix\Translate\Config\getEnabledLanguages
static getEnabledLanguages()
Определения
config.php:211
Bitrix\Translate\Controller\CheckPermission
Определения
checkpermission.php:11
Bitrix\Translate\Controller\Import\Csv
Определения
csv.php:13
Bitrix\Translate\Controller\Import\Csv\ACTION_CANCEL
const ACTION_CANCEL
Определения
csv.php:20
Bitrix\Translate\Controller\Import\Csv\indexAction
indexAction()
Определения
csv.php:237
Bitrix\Translate\Controller\Import\Csv\ACTION_IMPORT
const ACTION_IMPORT
Определения
csv.php:18
Bitrix\Translate\Controller\Import\Csv\finalizeAction
finalizeAction()
Определения
csv.php:420
Bitrix\Translate\Controller\Import\Csv\ACTION_UPLOAD
const ACTION_UPLOAD
Определения
csv.php:21
Bitrix\Translate\Controller\Import\Csv\init
init()
Определения
csv.php:101
Bitrix\Translate\Controller\Import\Csv\uploadAction
uploadAction()
Определения
csv.php:292
Bitrix\Translate\Controller\Import\Csv\ACTION_INDEX
const ACTION_INDEX
Определения
csv.php:22
Bitrix\Translate\Controller\Import\Csv\importAction
importAction()
Определения
csv.php:166
Bitrix\Translate\Controller\Import\Csv\cancelAction
cancelAction($tabId)
Определения
csv.php:372
Bitrix\Translate\Controller\Import\Csv\ACTION_FINALIZE
const ACTION_FINALIZE
Определения
csv.php:23
Bitrix\Translate\Controller\Import\Csv\purgeAction
purgeAction($tabId)
Определения
csv.php:389
Bitrix\Translate\Controller\Import\Csv\METHOD_UPDATE_ONLY
const METHOD_UPDATE_ONLY
Определения
csv.php:26
Bitrix\Translate\Controller\Import\Csv\SETTING_ID
const SETTING_ID
Определения
csv.php:16
Bitrix\Translate\Controller\Import\Csv\configureActions
configureActions()
Определения
csv.php:54
Bitrix\Translate\Controller\Import\Csv\ACTION_PURGE
const ACTION_PURGE
Определения
csv.php:19
Bitrix\Translate\Controller\Import\Csv\METHOD_ADD_UPDATE
const METHOD_ADD_UPDATE
Определения
csv.php:25
Bitrix\Translate\Controller\Import\Csv\METHOD_ADD_ONLY
const METHOD_ADD_ONLY
Определения
csv.php:27
Bitrix\Translate\Controller\Import\ImportCsv
Определения
importcsv.php:15
Bitrix\Translate\Controller\Import\IndexCsv
Определения
indexcsv.php:16
Bitrix\Translate\Permission\WRITE
const WRITE
Определения
permission.php:12
Bitrix\Translate\Permission\READ
const READ
Определения
permission.php:13
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$result
$result
Определения
get_property_values.php:14
Bitrix\Translate\Controller\IProcessParameters
Определения
iprocessparameters.php:9
Bitrix\Translate\Controller\IProcessParameters\getProgressParameters
getProgressParameters()
Bitrix\Translate\Controller\IProcessParameters\saveProgressParameters
saveProgressParameters()
Bitrix\Translate\Controller\IProcessParameters\keepField
keepField($fieldName)
Bitrix\Translate\Controller\IProcessParameters\clearProgressParameters
clearProgressParameters()
Bitrix\Translate\Controller\ITimeLimit
Определения
itimelimit.php:7
$success
$success
Определения
mail_entry.php:69
Bitrix\Main\Controller
Определения
agreement.php:2
Bitrix\Main\Engine
Определения
action.php:3
Bitrix\Main\File
Определения
Image.php:9
Bitrix\Main
Bitrix\Translate\Controller\Import
Определения
csv.php:2
Bitrix\Translate\Controller\ProcessParams
trait ProcessParams
Определения
processparams.php:12
Bitrix\Translate\Controller\STATUS_COMPLETED
const STATUS_COMPLETED
Определения
controller.php:6
Bitrix\Translate
Определения
autoload.php:3
Bitrix\Translate\Error
trait Error
Определения
error.php:11
$settings
$settings
Определения
product_settings.php:43
elseif
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения
prolog_main_admin.php:393
count
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения
waybill.php:936
$params
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения
template.php:799
$action
$action
Определения
file_dialog.php:21
bitrix
modules
translate
lib
controller
import
csv.php
Создано системой
1.14.0