Loadырь

Loadырь

Быть лучшим - не значит быть достаточно хорошим.
+1247
Репутация
4894
Рейтинг
+3
Loadырь Loadырь → Обновление онлайн бронирование 1.0.1 3 года назад

В этой истории счаслив будет только Петя. И то не долго. Как только такой «Петя» купит компонент, продажи у его автора резко упадут или прекратятся вовсе. Поддерживать такой компонент смысла уже не будет. И когда Петя прийдет с хотелками к автору, то может нарваться на «неразрешимость» своих хотелок. С чем он и вернется к своим заказчикам, которые не видя решения своих хотелок, покинут с печалькой этого самого «Петю».

Грубо говоря Петя не рекламирует сию разработку, а нагло наживается на ее использовании на чужих сайтах.

А вообще, это делается в виде «сервиса» с подпиской к доступу. Вы код никому не отправляете, а отдаете только информацию с вашего сервера посредством API. И все ваши клиенты хранят свою информацию на вашем сервере.

0
Loadырь Loadырь → Файлы free 4 года назад

Желательно вообще использовать системный загрузчик, если нет дополнительных требований. К тому же, желательно использовать стандартную таблицу cms_uploaded_files. Она почти дублирует вашу cms_upload_files, а все «доп. ячейки» приджойнить из вашей таблицы.

А что касается сторонних библиотек, то это вы вправе использовать на свой (или пользователей компонента) страх и риск. Главное, чтобы сторонние библиотеки не привнесли с собой вреда.

+8
Loadырь Loadырь → Файлы free 4 года назад

Отлично. Как бороться с XSS вы научились. Осталось вам устранить загрузку фейковых картинок содержащих код скриптовых языков (js, php) внутри картинки. Хоть современные браузеры научились их корректно отображать не выполняя скрипты внутри картинки (кроме firefox — он не знает что это такое и что с ними делать, поэтому просто ломает их), но мало ли, вдруг вернут эту «фичу» в будущем. Затем проверить на sql-иньекции ваши download.php и upload.php и можно выпускать платную версию. Но дальше уже без меня. Тестируйте, изучайте, включайте в себе «режим дурачка» и подумайте, что ещё может сделать этот или подобный ему «дурак», чтобы навредить или получить данные используя ваш компонент и стройте «защиту» от этого «дурака». Почему именно «дурак», да потому, что нормальный человек не станет писать яваскрипты в заголовках к файлам. Нормальный человек не станет загружать файлы яваскриптов, меняя у них расширение с .js на .jpg. И самое главное — чем опытнее ваш «режим дурачка», тем безопаснее от таких как он ваш компонент.

+2
Loadырь Loadырь → Файлы free 4 года назад

Если делать с упором на то, что данное поле можно эксплуатировать только админам, то тогда надо делать, как я это называю — «защиту от дурака» — чтобы ни при каких условиях это поле не работало у тех, кто не админ. Не все админы догадаются, что данное поле можно использовать только админам.

+2
Loadырь Loadырь → Файлы free 4 года назад

Стандартная XSS уязвимость. Пишем в названии картинки не «Картинка с котятами», а яваскрипт код и получаем на странице результат его действия. В данном случае это вывод в alert() кукисов пользователя, просматривающего страницу с этой картинкой.

+5
Loadырь Loadырь → Файлы free 4 года назад

Это значит, что текущую версию из каталога использовать не безопасно. Разве, что только на сайтах-форумах пенсионеров-огородников.

0
Loadырь Loadырь → Обновление магазина до 1.2.0 4 года назад

У одного моего клиента был goodredactor, теперь понятно от куда это тянется.

+1
Loadырь Loadырь → Обновление магазина до 1.2.0 4 года назад

А чтоьы теперь попасть в админку, надо в базе данных в таблице (cms_controllers) отключить работу (is_enable — NULL) контроллера showcase

+1
Loadырь Loadырь → Обновление магазина до 1.2.0 4 года назад

У вас стоит ещё какое-то стороннее дополнение, у которого есть хук before_print_head. Так вот его работа начинается и заканчивается раньше чем заработает showcase. И в этом хуке есть «косяк»: он не возвращает объект шаблона. «Ваша миссия, если вы за нее возьметесь» © состоит в том, чтобы в админке — компоненты — управление событиями, установить событие before_print_head компонента showcase выше событий before_print_head от других сторонних компонентов.

+4
Loadырь Loadырь → Файлы free 4 года назад

главное, чтобы и по безопасности

А с этим ещё надо поработать

Изображение

+2
Loadырь Loadырь → Напишем компонент для отслеживания и управления актуальностью записей типов контента 4 года назад

Да, всё нормально. Сам часто пользуюсь этим мемасиком

Изображение

Можно писать всю логику и в модели. Просто здесь принято это делать немного иначе. 

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

Да, движок развивается и что-то новое появляется. Поэтому разработчики пишут, что дополнение будет работать начиная с некоторой версии. У меня самого есть компоненты, которые полноценно будут работать только в следующем релизе. Но использование стандартных методов поможет избежать ошибок в будущих версиях. Например может обновиться либа по работе с почтой или выйдет новая крутая либа и заменит старую совсем. Тогда ваш код по отправке писем перестанет работать. А при использовании штатных методов всё будет работать, так как при обновлении либы обновятся и методы работы с ней. От того и процесс обновления движка сайта со сторонними дополнениями будет не таким «ужасающим».

И конечно, если не нашли методы в движке, как в случае с фильтром, то придется писать свои, это факт. Но когда есть в движке и не используется, то тогда это выглядит примерно так

Изображение
+3
Loadырь Loadырь → Напишем компонент для отслеживания и управления актуальностью записей типов контента 4 года назад

Я не тестировал компонент, но по идее должно работать.

Зачёт!!! 👍.

Прошлый раз удержался от комментария кода, в этот раз тоже промолчу. Скажу немного про 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. Вид. Такие конструкции желательно выносить в файл шаблона

  1. $reasons_list = [];
  2.  
  3. if ($reasons) {
  4.  
  5. foreach ($reasons as $key => $reason) {
  6.  
  7. $reasons_list[] = '<option value="'.$key.'">'.$reason.'</option>';
  8.  
  9. }
  10.  
  11. }
  12.  
  13. $result_text = '<p class="changestatus_text">Материал будет помечен, как неактуальный. Вы уверены, что хотите продолжить?</p>';
  14.  
  15. $user = cmsUser::getInstance();
  16.  
  17. if ($reasons_list && !$user->is_admin) {
  18.  
  19. $list = '<select>'.implode($reasons_list).'</select>';
  20.  
  21. $result_text = '<p class="changestatus_text">Укажите, пожалуйста, причину, по которой материал больше неактуален.</p>'.$list;
  22.  
  23. }

Или хотя бы использовать стандартные функции шаблона 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

0
Loadырь Loadырь → Напишем поле, которое позволит админу редактировать некоторые поля прямо со страницы записи 4 года назад

Можно добавить поле url, но тогда будут проблемы с двойным кликом. Да и другие поля с автоссылками могут работать не так, как ожидаем.

Можно сделать как в виджетах при наведении мышки на поле показывать иконку редактирования.

+2
Loadырь Loadырь → Напишем поле, которое позволит админу редактировать некоторые поля прямо со страницы записи 4 года назад

Зачем писать поле, если в движке это всё уже заложено. Например для объявлений создаем новое поле типа Число. Системное имя hits_counts. В опциях выставить «Только положительные числа», «Только целые числа» и «Сохранять нулевые значения»,  доступ кому надо и видимость желательно отключить в списке и в записи. Всё остальное по желанию. Далее лезем в базу в таблицу cms_con_board_fields и меняем название (name) c hits_counts на hits_count. Всё, больше в базу лезть не надо. В таблице cms_con_board у вас будет столбец с названием hits_counts, его можно удалить или пусть болтается баластом.

+2
Loadырь Loadырь → Напишем поле, которое позволит админу редактировать некоторые поля прямо со страницы записи 4 года назад

Если бы это поле было доступно не только админу, а всем подряд, то надо было бы проверить, какие данные пришли, проверить, существует ли тип контента, поле и т.д. Но так как это для админа, то обойдемся без этих лишних проверок.

Просто автору это не надо, себе вы можете сделать сами эти проверки и открыть доступ всем желающим.

0
Loadырь Loadырь → InstantCMS - организация рекламной кампании 4 года назад

Означает ли это количество покупок?

Нет, сюда входит также установка пробных и демо-версий.

+5
Loadырь Loadырь → InstantCMS - организация рекламной кампании 4 года назад

Вот вам недалёкий пример платного компонента на конкурентной cms. Там и стоимость в 4-5 раз больше, чем самое дорогое дополнение тут и лицензии, как вы любите и договора с юр. лицами, и сроки поддержки в 3 (три (ТРИ)) рабочих дня  и прочее и т. п. Но это не мешает им ломаться при обновлении движка самой cms. Это не дает никакой уверенности, что это будет работать в будущем. Это просто есть в каталоге дополнений той cms и всё. Хотите, используете, не хотите, не используете. Успеете решить все вопросы за их 3 (три (ТРИ)) рабочих дня тех. поддержки — супер, не успеете — либо ваши проблемы, либо готовьте сумму на продление тех. поддержки.

Подобное можно встретить на любых других cms. Я к тому, что движок вообще никак не связан с каталогом дополнений. В каталоге дополнений предлагаются разного рода решения для расширения возможностей самой cms от пользователей этой системы. И чем больше каталог, тем лучше. Но их работоспособность зависит только от заинтересованности в этом их разработчиков. При этом оно не обязано работать на всех версиях движка, на всех шаблонах существующих и ещё не опубликованных и поддерживать все сторонние компоненты, и работать на протяжении существования всемирного интернета. Только у вас есть выбор — использовать это дополнение или искать другие варианты решения поставленной задачи на конкурентной cms.

+2
Loadырь Loadырь → InstantCms - организация рекламной кампании 4 года назад

Тянуть две версии движка (что есть и премиум) для Fuze это не вариант. Сегодня команда есть, а завтра она может матерясь разбежаться ))), оставив Fuze одного с кучей версий премиумов. Но если будет команда разработчиков, тогда вопрос: «Зачем им Fuze?». Ведь можно премиум разработку тянуть и без него. Ту же электронную коммерцию заваять они сами смогут, используя движок в качестве фреймворка и выдавать его за премиум компонент. Например, как интернет магазин на битрикс24 с crm системой по 99 000 р. в год.

0
Loadырь Loadырь → InstantCms - организация рекламной кампании 4 года назад

Это была шутка, если что )))

+1
Loadырь Loadырь → InstantCms - организация рекламной кампании 4 года назад

В последнем ролике после ракеты не хватает космонавта, как на главной. Наш посыл не «лететь быстро непонятно куда», наш посыл — «болтаться среди звёзд», как lokanaft на главной (ИМХО).

Изображение

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.