Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - admin2@pomdv.com

Страницы: [1]
1
Перенес тут целиком наш интернет-магазин на свежий debian9-nginx1.14+php5.6-fpm
И всё в целом заработало( в разы!!! до 6 раз если точнее) быстрее, и вот осталась мелкая неприятность, при обмене 1С с сайтом, стала ИНОГДА вылазить ошибка

Access to undeclared static property: singleton::$instances in /var/www/r999222/data/www/999111.ru/classes/system/patterns/singletone.php

Вылазит она на третьем шаге импорта данных,при загрузке большого (около 5 тысяч +- ) количества товаров,

1) загрузка xml файлов и изображений на сервер проходит
2) первый этап импорта проходят полностью, а на втором шаге(я так понимаю - это уже импорт umidamp-a - вылетает бага, и импорт прерывается....

кроме указанной строчки в логах - ничего больше нет.
если выгружать те-же самые товары более мелкими кусками - все прекрасно выгружается, никаких ошибок.
Более того - баг не стабилен, одни и те-же товары могут выгрузиться сегодня, а завтра давать эту багу...

 Если кто сталкивался с подобным поведением - буду признателен за совет/идею.
Как вызвать трэйсколл в юми ? эксепшеном ?

2
 Собственно копая макрос, с целью внедрения прозрачной авторизации емейл/телефон/логин, с удивлением увидел в макросе отвечающем за логин пользователя,  строчки, поставившие меня в тупик, с вопросом "это что за индусский подход?"
	if ($user instanceof iUmiObject) {
if (\UmiCms\Service::Session()->get('fake-user') == 1) {
return ($this->restoreUser(true)) ? $this->auth() : $res;
}

[b]$hashedPassword = $user->getValue('password');[/b]
$hashAlgorithm =  UmiCms\Service::PasswordHashAlgorithm();

if ($hashAlgorithm->isHashedWithMd5($hashedPassword, $rawPassword)) {
$hashedPassword = $hashAlgorithm->hash($rawPassword, $hashAlgorithm::SHA256);
[b]$user->setValue('password', $hashedPassword);
$user->commit();[/b]
}
.....

 Это что, мы проверяем хэш пароля, и если он корректен, то мы коммитим его обратно в базу ? О_о
Или тут происходит что-то другое, и я просто туплю ?
 Блин, расписав вопрос, понял и ответ. Происходит смена хэша для пароля, с мд5 на sha256. Рукалицо )
Это получается эдакая заплатка для старых юзеров, регавшихся ещё под старой версией системы.


Если кому будет нужно, задача решилась примерно таким образом:

/classes/system/subsystems/models/auth/AuthenticationRules/LoginAndPassword.php

содержит в себе public function validate()

добавляем в неё:

$phone_number = preg_replace("/[^0-9]/", '', $login);

try {
$queryBuilder = $this->getQueryBuilder();
//*тут изменения
if (strlen($phone_number) == 11){
$queryBuilder->option('or-mode')->fields('login', 'e-mail','phone');
$queryBuilder->where('phone')->equals($phone_number);
}
else{$queryBuilder->option('or-mode')->fields('login', 'e-mail');}
......
Ну или модифицируем по желанию. Я добавил проверку на дублирующийся номер телефона, и в случае совпадения перебор корректных пар логин/пароль. С уведомлением себя любимого на почту, о таком странном казусе.

Если у вас лицензия все ещё активна, или вы планируете дальнейший апгрейд юми, то функцию стоит переопределить, или вообще переписать макрос login_do в кастом.

3
Добрый день. Занимаюсь внедрением на сайт относительно новых getsmartcatalog и getsmartfilters. Возник ряд проблем:
1. Изменение отображения товаров список/плитка происходит путём передачи в адресную строку ?catalog=list_view(grid_view). Getsmartfilters передают свои параметры таким же способом, т.е. если в адресной строке указан ?catalog=list_view, то применение фильтров сбрасывает отображение товаров обратно к grid_view. Как можно передавать в адресную строку и вариант отображения и фильтры?

2. При применении фильтров иногда отображаются не все товары. Это можно отчетливо проследить по числу, появляющемуся на кнопке фильтра "показать". Иногда число совпадает с кол-вом товаров, иногда некоторые товары не отображаются, хотя и проходят по всем параметрам фильтрации. Что можно предпринять в подобной ситуации? 

4
 Подскажите, есть где нить пример, как импортируется с помощью custom/commerceML2.xls
поля типа symlink ?

сделал уже пробный вариант, чтобы хотя бы одно значение подтянул... но всё как то печально)
вкратце - из 1С я выгружаю guid товара, по нему, с помошью Usel запроса возвращаю page, и пытаюсь её засунуть в поле типа symlink.

<property id="415" name="recommended_items" type="symlink" allow-runtime-add="1">
  <type name="Ссылка на дерево" data-type="symlink" multiple="multiple"/>
<title>Похожие товары</title>
<xsl:variable name="guid" select="recommended_items/ЗначениеРеквизита[Наименование = 'value']/Значение"/>
<value><xsl:value-of select="document(concat('usel://find_page/',$guid))/page" /> </value>

</property>

значение идентификатора 1С я получаю корректное и точное, результат usel запроса в браузере выглядит вот так:

<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="usel" method="find_page" generation-time="0.372685">
<page id="24367" parentId="24324" link="/katalog/stroitel_nye_smesi/suhie_smesi/shtukaturki/rotband_30_kg_shtukaturka_gipsovaya_knauf_40/" is-active="1" object-id="627741" type-id="840" update-time="1459146486" alt-name="rotband_30_kg_shtukaturka_gipsovaya_knauf_40" xlink:href="upage://24367">
<basetype id="56" module="catalog" method="object">Объекты каталога</basetype>
<name>Ротбанд 30 кг штукатурка гипсовая KNAUF/40</name>
</page>
<total>1</total>
</udata>
<!--
 This page generated in 0.382658 secs by XSLT, HTTP SCHEME MODE
-->

А вот что с ним сделать дальше, знаний не хватает, дерево) Но вышеупомянутым способом он переменную не заполняет, а примеров в сети найти не смог (


Отдаваемый 1С кусок выглядит так:
     <Товар>
<recommended_items>
  <ЗначениеРеквизита>
<Наименование>value</Наименование>
<Значение>1908c00f-1851-48e2-a855-4d939759ab86</Значение>
  </ЗначениеРеквизита>

Страницы: [1]