Loadырь
Быть лучшим - не значит быть достаточно хорошим.
+1247
Репутация
4894
Рейтинг
В этой истории счаслив будет только Петя. И то не долго. Как только такой «Петя» купит компонент, продажи у его автора резко упадут или прекратятся вовсе. Поддерживать такой компонент смысла уже не будет. И когда Петя прийдет с хотелками к автору, то может нарваться на «неразрешимость» своих хотелок. С чем он и вернется к своим заказчикам, которые не видя решения своих хотелок, покинут с печалькой этого самого «Петю».
Грубо говоря Петя не рекламирует сию разработку, а нагло наживается на ее использовании на чужих сайтах.
А вообще, это делается в виде «сервиса» с подпиской к доступу. Вы код никому не отправляете, а отдаете только информацию с вашего сервера посредством 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, его можно удалить или пусть болтается баластом.
Просто автору это не надо, себе вы можете сделать сами эти проверки и открыть доступ всем желающим.
Нет, сюда входит также установка пробных и демо-версий.
Вот вам недалёкий пример платного компонента на конкурентной cms. Там и стоимость в 4-5 раз больше, чем самое дорогое дополнение тут и лицензии, как вы любите и договора с юр. лицами, и сроки поддержки в 3 (три (ТРИ)) рабочих дня и прочее и т. п. Но это не мешает им ломаться при обновлении движка самой cms. Это не дает никакой уверенности, что это будет работать в будущем. Это просто есть в каталоге дополнений той cms и всё. Хотите, используете, не хотите, не используете. Успеете решить все вопросы за их 3 (три (ТРИ)) рабочих дня тех. поддержки — супер, не успеете — либо ваши проблемы, либо готовьте сумму на продление тех. поддержки.
Подобное можно встретить на любых других cms. Я к тому, что движок вообще никак не связан с каталогом дополнений. В каталоге дополнений предлагаются разного рода решения для расширения возможностей самой cms от пользователей этой системы. И чем больше каталог, тем лучше. Но их работоспособность зависит только от заинтересованности в этом их разработчиков. При этом оно не обязано работать на всех версиях движка, на всех шаблонах существующих и ещё не опубликованных и поддерживать все сторонние компоненты, и работать на протяжении существования всемирного интернета. Только у вас есть выбор — использовать это дополнение или искать другие варианты решения поставленной задачи на конкурентной cms.
Тянуть две версии движка (что есть и премиум) для Fuze это не вариант. Сегодня команда есть, а завтра она может матерясь разбежаться ))), оставив Fuze одного с кучей версий премиумов. Но если будет команда разработчиков, тогда вопрос: «Зачем им Fuze?». Ведь можно премиум разработку тянуть и без него. Ту же электронную коммерцию заваять они сами смогут, используя движок в качестве фреймворка и выдавать его за премиум компонент. Например, как интернет магазин на битрикс24 с crm системой по 99 000 р. в год.
Это была шутка, если что )))
В последнем ролике после ракеты не хватает космонавта, как на главной. Наш посыл не «лететь быстро непонятно куда», наш посыл — «болтаться среди звёзд», как lokanaft на главной (ИМХО).