postFiles: function($form, request, callback)
{
var formData = new FormData($form[0]);
var input = $form.find('input[type=file]')[0];
for(var n in input.files) {
if(input.files[n].size > 104857600) {
alert('Максимальный размер загружаемых файлов - 100 Мб!');
return;
}
}
$.ajax({
url: window.location.href,
headers: {
'X-WINTER-REQUEST-HANDLER': request? request : $form.attr('data-request') // это для WinterCMS
},
method: 'POST',
dataType: 'json',
type: 'POST',
processData: false,
contentType: false,
data: formData,
success: function(data) {
$('#file-upload-progress').remove();
if(callback) {
callback(data);
} else {
eval($form.attr('data-request-success'));
}
},
error: function(data) {
$('#file-upload-progress').remove();
if(data.responseText) {
alert(data.responseText);
}
},
xhr: function() { // custom xhr
var myXhr = $.ajaxSettings.xhr();
if(myXhr.upload) {
myXhr.upload.addEventListener(
'progress',
function(evt) {
if (evt.lengthComputable) {
var $progress = $('#file-upload-progress');
if($progress.length === 0) {
$progress = $(
'<div id="file-upload-progress" style="position: fixed; top: 0; left: 45%; text-align: center; background-color: white; border-radius: 1em; padding: 0 1em 1em 1em; border: 2px solid #CEF; z-index: 2000">' +
'<h6>Загрузка файлов</h6>' +
'<div class="progress" style="margin-bottom: 1em">' +
'<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>' +
'</div>' +
'</div>'
);
$progress.append(
$('<button class="btn btn-sm btn-default"><i class="icon-remove"></i> Отменить загрузку</button>')
.click(function() {
myXhr.abort();
$progress.remove();
})
)
$('body').append($progress.hide());
}
var percentComplete = Math.round(evt.loaded / evt.total * 100);
if(percentComplete === 1) {
$progress.hide();
} else {
$progress.find('div.progress-bar').css('width', percentComplete + '%').attr('aria-valuenow', percentComplete).html(percentComplete + ' %');
$progress.show();
}
}
},
false
);
}
return myXhr;
}
});
return false;
},
$paramsArray = [];
foreach(['fasad', 'karkas', 'ruchki', 'mehanism'] as $key) {
$val = $prop[$key]['VALUE'];
if($val !== '') {
$paramsArray[$prop[$key]['NAME']] = $val;
}
}
public function getCards2024(): array
{
$cards = [];
$limit = 100;
$cursor = [
'limit' => $limit
];
do {
$res = $this->curlQuery(
self::API_SUPPLIERS,
self::METHOD_POST,
'content/v2/get/cards/list',
[
'settings' => [
'sort' => [
'ascending' => false
],
'cursor' => $cursor,
'filter' => ['withPhoto' => -1]
]
]
);
if(!is_array($res) || !isset($res['cards'])) {
throw new \ErrorException('WB returns wrong answer');
}
$cards = array_merge($cards, $res['cards']);
$cursor['updatedAt'] = $res['cursor']['updatedAt'];
$cursor['nmID'] = $res['cursor']['nmID'];
} while($res['cursor']['total'] >= $limit);
return $cards;
}
private function makeLowIdList($array)
{
return array_flip(array_map(fn($value) => mb_convert_case($value, MB_CASE_LOWER), $array));
}
private function getId($idList, $title, $label)
{
$lowTitle = mb_convert_case($title, MB_CASE_LOWER);
if(!array_key_exists($lowTitle, $idList)) {
throw new Exception('wrong ' . $label . ': ' . $title);
}
return $idList[$lowTitle];
}
public function import($data)
{
$payerIds = $this->makeLowIdList(Payer::getTitles());
foreach(...) {
try {
...
$payerId = $this->getId($payerIds, $row['payer'], $row['orderNumber'] . ' payer');
...
} catch(Exception $e) {
$error = $e->getMessage();
if(!in_array($error, $errors)) {
$errors[] = $error;
}
}
}
return $errors;
}
появилась проблема что не читает кирилицу
convert -list format
покажет, что у IM с поддержкой этого формата.MSVG SVG rw+ ImageMagick's own SVG internal renderer
SVG SVG rw+ Scalable Vector Graphics (XML 2.9.4)
SVGZ SVG rw+ Compressed Scalable Vector Graphics (XML 2.9.4)
/etc/ImageMagick-6/policy.xml
запрещено конвертировать из этого формата ввиду теоретических эксплойтов. switch($functionName) {
case 'index': return index();
case 'store': return store();
}
$registry = array(
'index' => new ActionIndex(),
'store' => new ActionStore()
)
$registry[$functionName]->run();