
Loadырь
Быть лучшим - не значит быть достаточно хорошим.
+1239
Репутация
4851
Рейтинг
Ещё погуглите, устранили «дырки» в компоненте, в той версии, что вы себе поставили или нет.
Да, этот файл. Там внутри миниинструкция в комментариях.
Есть тут instantcms.ru/users/loadir/files, но версия древняя, не проверял на последних.
Этих настроек нет так как у вас в указанной в первом скрине папке есть файл название_типа_контента_list.tpl.php. Переименуйте его или удалите и появится выбор.
В этой истории счаслив будет только Петя. И то не долго. Как только такой «Петя» купит компонент, продажи у его автора резко упадут или прекратятся вовсе. Поддерживать такой компонент смысла уже не будет. И когда Петя прийдет с хотелками к автору, то может нарваться на «неразрешимость» своих хотелок. С чем он и вернется к своим заказчикам, которые не видя решения своих хотелок, покинут с печалькой этого самого «Петю».
Грубо говоря Петя не рекламирует сию разработку, а нагло наживается на ее использовании на чужих сайтах.
А вообще, это делается в виде «сервиса» с подпиской к доступу. Вы код никому не отправляете, а отдаете только информацию с вашего сервера посредством API. И все ваши клиенты хранят свою информацию на вашем сервере.
Желательно вообще использовать системный загрузчик, если нет дополнительных требований. К тому же, желательно использовать стандартную таблицу cms_uploaded_files. Она почти дублирует вашу cms_upload_files, а все «доп. ячейки» приджойнить из вашей таблицы.
А что касается сторонних библиотек, то это вы вправе использовать на свой (или пользователей компонента) страх и риск. Главное, чтобы сторонние библиотеки не привнесли с собой вреда.
Отлично. Как бороться с XSS вы научились. Осталось вам устранить загрузку фейковых картинок содержащих код скриптовых языков (js, php) внутри картинки. Хоть современные браузеры научились их корректно отображать не выполняя скрипты внутри картинки (кроме firefox — он не знает что это такое и что с ними делать, поэтому просто ломает их), но мало ли, вдруг вернут эту «фичу» в будущем. Затем проверить на sql-иньекции ваши download.php и upload.php и можно выпускать платную версию. Но дальше уже без меня. Тестируйте, изучайте, включайте в себе «режим дурачка» и подумайте, что ещё может сделать этот или подобный ему «дурак», чтобы навредить или получить данные используя ваш компонент и стройте «защиту» от этого «дурака». Почему именно «дурак», да потому, что нормальный человек не станет писать яваскрипты в заголовках к файлам. Нормальный человек не станет загружать файлы яваскриптов, меняя у них расширение с .js на .jpg. И самое главное — чем опытнее ваш «режим дурачка», тем безопаснее от таких как он ваш компонент.
Если делать с упором на то, что данное поле можно эксплуатировать только админам, то тогда надо делать, как я это называю — «защиту от дурака» — чтобы ни при каких условиях это поле не работало у тех, кто не админ. Не все админы догадаются, что данное поле можно использовать только админам.
Стандартная XSS уязвимость. Пишем в названии картинки не «Картинка с котятами», а яваскрипт код и получаем на странице результат его действия. В данном случае это вывод в alert() кукисов пользователя, просматривающего страницу с этой картинкой.
Это значит, что текущую версию из каталога использовать не безопасно. Разве, что только на сайтах-форумах пенсионеров-огородников.
У одного моего клиента был goodredactor, теперь понятно от куда это тянется.
А чтоьы теперь попасть в админку, надо в базе данных в таблице (cms_controllers) отключить работу (is_enable — NULL) контроллера showcase
У вас стоит ещё какое-то стороннее дополнение, у которого есть хук before_print_head. Так вот его работа начинается и заканчивается раньше чем заработает showcase. И в этом хуке есть «косяк»: он не возвращает объект шаблона. «Ваша миссия, если вы за нее возьметесь» © состоит в том, чтобы в админке — компоненты — управление событиями, установить событие before_print_head компонента showcase выше событий before_print_head от других сторонних компонентов.
А с этим ещё надо поработать
Да, всё нормально. Сам часто пользуюсь этим мемасиком
Можно писать всю логику и в модели. Просто здесь принято это делать немного иначе.
Да, движок развивается и что-то новое появляется. Поэтому разработчики пишут, что дополнение будет работать начиная с некоторой версии. У меня самого есть компоненты, которые полноценно будут работать только в следующем релизе. Но использование стандартных методов поможет избежать ошибок в будущих версиях. Например может обновиться либа по работе с почтой или выйдет новая крутая либа и заменит старую совсем. Тогда ваш код по отправке писем перестанет работать. А при использовании штатных методов всё будет работать, так как при обновлении либы обновятся и методы работы с ней. От того и процесс обновления движка сайта со сторонними дополнениями будет не таким «ужасающим».
И конечно, если не нашли методы в движке, как в случае с фильтром, то придется писать свои, это факт. Но когда есть в движке и не используется, то тогда это выглядит примерно так
Зачёт!!! 👍.
Прошлый раз удержался от комментария кода, в этот раз тоже промолчу. Скажу немного про MVC:
1. Модель. Файл модели используется для работы с базой данных — получение (запись, удаление, обновление и т.п.) данных и представление их в нужном виде. Логику по проверкам и прочие методы, не используемые в файле модели, лучше выносить в controller (файл frontend или backend). У вас это public function check($ctype_id, $item_id, $field_id, $reason_id = null) и public function dataExclude($user_id, $ctype_name).
Для работы с датами и временем в базе данных есть такие методы. Отсюда и ниже можно использовать их
2. Вид. Такие конструкции желательно выносить в файл шаблона
Или хотя бы использовать стандартные функции шаблона github.com/instantsoft/icms2/blob/master/system/libs/template.helper.php#L333 Так ваши кнопки, селекторы и прочее сразу будут нужного цвета и размера для выбранного шаблона на сайте у пользователей данного компонента.
3. Контроллер. Для отправки писем «счастья» есть нормальные методы и им тоже не место в файле модели github.com/instantsoft/icms2/blob/master/system/controllers/comments/frontend.php#L204
Можно сделать как в виджетах при наведении мышки на поле показывать иконку редактирования.
Зачем писать поле, если в движке это всё уже заложено. Например для объявлений создаем новое поле типа Число. Системное имя hits_counts. В опциях выставить «Только положительные числа», «Только целые числа» и «Сохранять нулевые значения», доступ кому надо и видимость желательно отключить в списке и в записи. Всё остальное по желанию. Далее лезем в базу в таблицу cms_con_board_fields и меняем название (name) c hits_counts на hits_count. Всё, больше в базу лезть не надо. В таблице cms_con_board у вас будет столбец с названием hits_counts, его можно удалить или пусть болтается баластом.
Просто автору это не надо, себе вы можете сделать сами эти проверки и открыть доступ всем желающим.
Нет, сюда входит также установка пробных и демо-версий.