Sergey
Если он есть, то да, по API
Dmitry
Сергей Cave
Сергей Cave
https://github.com/fiction13/plg_radicalform_usermail
Evgenii_Web
разве функция explode не должна возвращать нулевую строку если не находит разделитель что то практика с учебником не сходится
Evgenii_Web
Evgenii_Web
все понятно, если нет разделителя то влетает сама строка при положительном лимите
Ildar
ребят
есть SobiDisplayControllerPayment и метод pay
есть SobiDisplayViewPayment
как для метода pay правильно нужный шаблон?
пока у меня открывается default.php
Evgenii_Web
Evgenii_Web
не пишите по кайфу никогда алиасы)
Evgenii_Web
потом можно встрять)
Vladimir
Vladimir
Я зайду, введу почту всех нелюбимых мною людей и буду нажимать кнопку «отправить»
Evgenii_Web
😂
Eugene
@Evgen_Web где-то выше писал про тормоза и меню.
так это математика: каждый пункт меню умножить на кол-во меню и все это тянет параметры. итого просто не хватает оперативной памяти. тут дело не в CMS, а в архитектуре проекта. я знаю, что пишу,тк у нас был коммерческий и бесплатныц продукт JMB Tree. модуль меню, фишка которого - можно было из пунктов меню выбирать какие включать на отображение и, таким образом, конструировать кастомные менюхи внутри модуля без создания отдельных пунктов меню.
вот это дело жутко тормозило при большом кол-ве меню. и все потому, что арифметика - просто не хватало памяти для обработки такого массива информации,. это проблема не джумлы, а а архитектуры сайта и самого расширения.
Eugene
и тормоза были не не фронте, а в админке при открытии такого модуля
Eugene
для фронта вообще по фигу, хоть миллион меню
Sergey
Народ, у кого 10 минут есть - протестируйте у себя тоже. https://github.com/joomla/joomla-cms/issues/39360
Sergey
Слетают параметры библиотеки из базы данных при обновлении библиотеки
Sergey
@fictionlabs @drekun @tsymbalmitia @Septdir
Дмитрий
Vitaly
Доброго времени суток!
Подскажите, как решить задачку:
Есть форма, а в ней:
<input type="file" accept="image/*, .pdf" />
accept может быть и любым другим, но этот пример показателен.
Как проверить расширение загружаемого файла на стороне сервера?
Как получить файл, его расширение, его MIME - это все понятно. Но как написать функцию валидации? Ничего готового я не нашел. Может плохо искал?
Предполагаю, что алгоритм такой:
Найти все расширения для MIME image, далее собрать массив расширений и отдельно массив mime из accept, и потом проверять расширение и mime текущего файла по этим двум массивам.
Но может можно как-то проще? Или есть готовый метод в Joomla?
Дмитрий
Дмитрий
там написаны валидаторы
Дмитрий
по майм типу если честно бесполезно проверять
Дмитрий
он формируется браузером или смотрится по контенту
Дмитрий
по контенту тоже бесмысленно
Дмитрий
потому что пару байтов добалвяешь нужных
Дмитрий
и файл png превращается в php
Vitaly
Т.е. нет вообще смысла проверять файл на сервере?
Дмитрий
https://github.com/joomla/joomla-cms/blob/4.2-dev/libraries/src/Filter/InputFilter.php#L185
Дмитрий
Дмитрий
имеет смысл конечно
Дмитрий
фронту доверять ничего нелзя
Дмитрий
нужно исходить из того, что в запросе к тебе идут одни небезопасные данные и тебя хотят взлмать
Дмитрий
вот можешь увидеть что они майм тип не смотрят
Vitaly
Дмитрий
то етсь по сути реально надо проверять расширение
Дмитрий
что в имени файлов
Дмитрий
Дмитрий
проверять внутри пхп теги
Дмитрий
и расширения
Дмитрий
то есть реально содержимое надо смотреть
Vitaly
Ну вот смотри. Я так понимаю, что этот метод isSafeFile - уже будет вызываться при получении файла через $app->input->files->get. Если даже и нет, можно вызвать отдельно. Не суть. Но вот мне нужно останавливать выполнение кода, если загруженный файл не соотвествует accept из HTML. А там не просто список расширений, а вот image/*, .pdf указаны. И как?
Дмитрий
Дмитрий
уде смотришь на майм тип и нужнцыфй файл или нет
Vitaly
уде смотришь на майм тип и нужнцыфй файл или нет
Ага. Только майм будет image/jpg, а у меня image/*. Здесь только руками писать код проверки? Отрывать звездочку, проверять, jpg. Я был удивлен, что в PHP нет готовой функции для проверки в соответствии с accept из html.
Дмитрий
Ну вот смотри. Я так понимаю, что этот метод isSafeFile - уже будет вызываться при получении файла через $app->input->files->get. Если даже и нет, можно вызвать отдельно. Не суть. Но вот мне нужно останавливать выполнение кода, если загруженный файл не соотвествует accept из HTML. А там не просто список расширений, а вот image/*, .pdf указаны. И как?
то есть поулчил файлы от инпута, если пусто, значит зловред, если есть файл, то уже запускаешь свой код и сомтришь на майм тип и тд, если не соовествеует, то останавливаешь свой
Дмитрий
Vitaly
И... решил спросить - может она все-таки есть)
Дмитрий
accept насколько я помню только на фронте сеет
Дмитрий
он в заголовки запроса что-то пишет разве?
Vitaly
Да с ним не проблема. Он у меня доступен в PHP. Значение. Я про то, что парсить его и делать логики проверки нужно вручную, получается. Нет готовой функции типа check_file_acceept($accept)
Дмитрий
Дмитрий
оно передается где-то?
Дмитрий
в заголовках запроса? или где?
Дмитрий
я что-то не помню
Дмитрий
а если заголовков нет? что тогда?
Дмитрий
ну вот браузер какой-то который не шлет
Дмитрий
по инпуту не формирует
Дмитрий
Устанавливает фильтр на типы файлов, которые вы можете отправить через поле загрузки файлов. Тип файла указывается как MIME-тип, при нескольких значениях они перечисляются через запятую. Если файл не подходит под установленный фильтр, он не показывается в окне выбора файлов.
Дмитрий
это фильтр для окна выбора для операционной системы
Дмитрий
я не знаю чтобы он что-то формировал в запросе, даже в заголовках
Дмитрий
Дмитрий
этот accpet в запросах нигде не фигурирет, откуда программа на беке узнает? если в запросе ничего нет про этот accept, а елси даже и есть, то браущеры по разному могут формировать или вообще не быть
Дмитрий
поэтому и нет, просто потому что это не надежно, если и было бы , то этого физически нет
Vitaly
Sergey
Речь о том, что джумла перед обновлением библиотеки сначала её сносит из системы. В моём случае это заметно по удалению параметров из #__extensions
========================
Законный вопрос у разработчиков, читающих этот файл, может заключаться в том, почему мы используем тип расширения "файлы" вместо типа
"библиотека", который, на первый взгляд, кажется более подходящим.
Мы не сошли с ума. Мы работаем над устранением негативных последствий совершенно иного отношения Joomla к "библиотеке".
пакеты, чем любой другой тип упаковки.
При применении обновления к библиотечному пакету Joomla! удалит его ДО того, как он выполнит
предполетное событие сценария установки. Это означает, что любые проверки, сделанные там, чтобы предотвратить установку библиотеки в несовместимом
среда (например, неправильный PHP или Joomla! версии или даже предотвращение случайного понижения версии) приводит к удалению файлов библиотеки
.
Это действительно плохо для любого, кто пытается установить пакет библиотеки в неподдерживаемой среде. Если
пакет библиотеки не выполняет никаких проверок, установленная версия библиотеки приводит к сбою зависящих от нее расширений, что приводит к закрытию
сайта. Если пакет библиотеки выполняет проверки в самый ранний доступный момент времени (предполетный), вы в конечном итоге получаете старый
файлы библиотеки были удалены, что снова приводит к сбою зависящих от него расширений, приводя к закрытию
сайта. Независимо от того, что вы делаете, само действие по попытке установить неподдерживаемую версию библиотеки УБИВАЕТ САЙТ. Это
безумие. Хуже того, это известная проблема в Joomla с ~ 2017 года, но никто не исправит ее до выхода новой основной версии.
Поскольку в Joomla 4.0 это маловероятно, мы говорим о Joomla 5, срок действия которой может составлять от двух до десяти лет
в будущее. Очевидно, что нам это не подходит: мы не хотим, чтобы попытки установить наше программное обеспечение приводили к тому, что сайты переставали
работать!
Единственное, что мы можем сделать, чтобы предотвратить сбой ваших сайтов, если вы попытаетесь установить версию нашего
программного обеспечения, которая не поддерживает ваш PHP и / или Joomla! версии предназначены для доставки нашей библиотеки в виде пакета *files*. Это
бессмысленно, это на 100% архитектурно неправильно, но это также единственный способ, которым мы можем применить проверки перед установкой, которые
завершаются корректно, вместо того, чтобы привести к сбою вашего сайта и его сжиганию.
<!--
A legitimate question among developers reading this file may be why we are using a "files" extension type instead of the
"library" type which, on the face of it, seems more appropriate.
We have not lost our mind. We are working around the adverse effects of the very different way Joomla treats "library"
packages than any other package type.
When applying an update to a library package Joomla! will uninstall it BEFORE it executes the installation script's
preflight event. This means that any checks made there to prevent the installation of the library in an incompatible
environment (e.g. wrong PHP or Joomla! version, or even preventing an accidental downgrade) results in the library files
being UNINSTALLED.
Evgenii_Web
ищу на чистом js ленивую загрузку яндекс карты)
Павел
Павел
Павел
Сорчн
Павел
Чет все сложно в поиске :))
Павел
<iframe id="myIframe" src="http://.." /> <script type="text/javascript"> var iframe = document.getElementById('myIframe').src = iframe.src; iframe.src = ''; document.onload = function(){iframe.src = src;} </script>
Павел
Типо такого