A

Absolute134

+9
Репутация
17
Рейтинг
#1 Рейтинг: 10 звезд вместо 5; голосовать за свою запись; второй рейтинг 18 марта 2021 в 17:32
Всем привет!
Решаю задачу:
1. Как сделать рейтинг 10 звезд, вместо 5 для типа контента?
2. Что поправить, чтобы можно было голосовать за свою запись?
3. Как добавить второй рейтинг к типу контента? Грубый пример:
Ниссан Кашкай:
Проходимость (оценка): 6 из 10
Расход топлива (оценка): 8 из 10

Любые мысли. Заранее спасибо)
#1 Кто-то пробовал убрать эти default / js / jquery-cookie.js default / js / fields / string_input.js скрипты? 20 октября 2020 в 15:21


Что в движке использует куки с jquery-cookie.js?

@andriu3240
Возьмите название метода, который добавляется в jQuery этим скриптом и сделайте массовый поиск по файлам — найдете что использует данный конкретный метод. Также можно удалить скрипт и начать активно тестировать все функции сайта с открытой консолью в браузере.
#2 Вырезать внешние ссылки 8 октября 2020 в 13:52

Fatal error: Cannot redeclare callback()

@arsen1989
Да ...PHP такой PHP))
Наверное, это решается как-то так:
  1. if(!function_exists("callback")){
  2. function callback($matches) {
  3. if (preg_match('#^https?://(www\.)?localhost\.ru(/.+)?$#i', $matches[1])) {
  4. return '<a href="' . $matches[1] . '" target="_blank">' . $matches[2] . '</a>';
  5.  
  6. }
  7. return $matches[2];
  8. }
  9. }
#3 Ограничить количество контактов для группы пользователей 6 октября 2020 в 15:36

Всего 20 контактов для выбранной группы.

@arsen1989
Мне немного другое предстоит сделать — макс. 15 контактов в сутки.
Если крупными мазками, вам нужно сделать что-то такое внутри system\controllers\messages\model.php
  1. public function checkContactsLimit($user, $group_id, $limit){
  2. if ($user->isInGroup($group_id) && $this->getContactsCount($user->id) >= $limit){
  3. return true;
  4. }
  5. return false;
  6. }
Проверять и возвращать соответствующую ошибку добавления контакта в action.
#4 Вырезать внешние ссылки 6 октября 2020 в 14:48

Подскажите а удалось ли вам реализовать сразу 2 проверки( к примеру на ссылку и на телефон)?

@arsen1989
Я у себя пока не сделал. Но, полагаю, можно так поступить:
  1. public function replaceExternalLinks($html = '', $delPhone = false){
  2.  
  3. function callback($matches) {
  4. if (preg_match('#^https?://(www\.)?localhost\.ru(/.+)?$#i', $matches[1])) {
  5. return '<a href="' . $matches[1] . '" target="_blank">' . $matches[2] . '</a>';
  6.  
  7. }
  8. return $matches[2];
  9. }
  10.  
  11. $pattern = '#<a[^>]*href=[\'"]([^\'"]*)[\'"][^>]*>(((?!<a\s).)*)</a>#i';
  12. $filteredString = preg_replace_callback($pattern, 'callback', $html);
  13. if($delPhone){
  14. return preg_replace('/[\(+\/\\\\]?(\d[+\(\)\/\\\\ -]*){10,11}/', '***' , $filteredString);
  15. } else {
  16. return $filteredString;
  17. }
  18. }
Соответственно, если надо удалять телефоны, то вторым параметром передаем истину.
cmsForm::replaceExternalLinks($content, true);
#5 Ограничить количество контактов для группы пользователей 5 октября 2020 в 16:01

Возможность писать не более чем допустим 20 или 60 пользоваетлям.

@arsen1989
Всего 20 контактов или максимум 20 контактов, например, в сутки?
#6 Вырезать внешние ссылки 5 октября 2020 в 15:40

Ваша регулярка будет правильнее так

  1. /[\(+\/\\\]?(\d[+\(\)\/\\\ -]*){10,12}/
иначе в номерах вида +44 203 769 18 80
будет оставаться последняя цифра

@arsen1989
Регулярка под российские федеральные сотовые номера. И различные варианты их написания:
+7 /900/ 800-300-50
8(900)8000 503
и т.д.
#7 Вырезать внешние ссылки 1 октября 2020 в 20:07

Подскажите, куда именно вы вставляете эту проверку?

@arsen1989
system\core\form.php
И в нужном месте соответственно дёргаем cmsForm::replaceExternalLinks($content)
Например, заменять ссылки в лс:
(пытался на стадии action, но не помню почему не сделал там)
system\controllers\messages\model.php
  1. public function addMessage($from_id, $recipients, $content){
  2.  
  3. $message_ids = array();
  4.  
  5. foreach($recipients as $to_id){
  6.  
  7. $message_ids[] = $this->insert('cms_users_messages', array(
  8. 'from_id' => $from_id,
  9. 'to_id' => $to_id,
  10. 'content' => cmsForm::replaceExternalLinks($content)
  11. ));
  12.  
  13. }
  14.  
  15. return sizeof($message_ids)>1 ? $message_ids : $message_ids[0];
  16.  
  17. }
Предварительно в NeoMessenger нужно отключить редиректы.

В идеале планирую реализовать так: проверять на ссылки и номера телефонов, регулярки написал, вроде и потестил — ищу куда их корректно вписать, чтобы проверять личные сообщения.

@arsen1989
Мне тоже нужно номера телефонов выпиливать. Поделитесь вашей регуляркой?
У меня так:
  1. /[\(+\/\\\]?(\d[+\(\)\/\\\ -]*){10,11}/
#8 Вырезать внешние ссылки 23 сентября 2020 в 20:52
Пока так:
  1. public function replaceExternalLinks($html = ''){
  2.  
  3. function callback($matches) {
  4. if (preg_match('#^https?://(www\.)?localhost\.ru(/.+)?$#i', $matches[1])) {
  5. return '<a href="' . $matches[1] . '" target="_blank">' . $matches[2] . '</a>';
  6.  
  7. }
  8. return $matches[2];
  9. }
  10.  
  11. $pattern = '#<a[^>]*href=[\'"]([^\'"]*)[\'"][^>]*>(((?!<a\s).)*)</a>#i';
  12. $filteredString = preg_replace_callback($pattern, 'callback', $html);
  13. return $filteredString;
  14. }
Из
  1. Игровые <a href="http://spam.com">казино</a> Вулкан
Вернет
  1. Игровые казино Вулкан
Из
  1. Читайте в <a href="https://localhost.ru/blog/123/">моем</a> блоге
Вернет
  1. Читайте в <a href="https://localhost.ru/blog/123/" target="_blank">моем</a> блоге
Для личных сообщений, полагаю, сгодится.
#1 Вырезать внешние ссылки 23 сентября 2020 в 14:37
Всем доброго здравия!
Суть такая:
1. Приходят хрумеры и еще какие-то боты.
2. Приходят спаммеры

Надо вырезать все внешние ссылки в личных сообщениях (стоит NeoMessenger Premium).
Вырезать внешние ссылки в профилях (статус, о себе), оставлять внешние ссылки в блогах, благо они модерируются.

Есть ли какие-либо решения? Заранее спасибо.
#9 Складчина с уточнением ТЗ на обновление/переписывание Биллинга 4 сентября 2020 в 14:47

автор за них может назначить некую сумму денег.

frukt
Назначить сумму — может. А код закрыть не может. Я приводил пример с Joomla — за бугром все эти лицензии не пустой звук, как у нас и их четко соблюдают. Так вот, если вы выложите компонент под кубом на JED — его удалят. Даже если это будет один из разработчиков Joomla — никаких двойных стандартов. Всё четко. А коммерческие расширения — да ради Бога.
#10 Складчина с уточнением ТЗ на обновление/переписывание Биллинга 4 сентября 2020 в 14:29

Да. InstantCMS под GPL. Биллинг от автора InstantCMS ожидаемо может быть платным и закрытым.

Fuze
Перечитал текст лицензии GPL — ничего не сказано про исключения для разработчика R2. Извините.

Как лучше поступить в текущей ситуации я уже написал. А давить морально, учитывая, что в общем то r2 ничего не должен, а то что был должен, отдал с лихвой, не стоит. За пирожок никто работать не будет.

Fuze
я ни в коем разе не давлю морально. И считаю, что каждый труд должен быть достойно оплачен. Я бы лучше платил тройную цену за компонент, но был уверен, что:
а) Будут регулярные обновления и развитие.
б) Мне оперативно — в режиме онлайн придут на помощь, если возникнут трудности.
в) Мне сделают необходимые изменения в закрытой части кода.

Я работаю преимущественно с PrestaShop и там есть расширения по 200...500 Евро. И никому в голову не приходит оспаривать право автора назначать такую цену, но вместе с тем все понимают, что 3 простых (казалось бы) пункта, что я привел выше — будут выполнены, также, как будет выполнен безоговорочный рефанд, если что-то пошло не так в конкретном проекте.
#11 Складчина с уточнением ТЗ на обновление/переписывание Биллинга 3 сентября 2020 в 15:01

r2 автор InstantCMS. Его компонент не может нарушать лицензии его же продукта.

Fuze
GPL — предполагает открытый исходный код. Вы же декларируете, что продукт под GPL?

Ничего не спутали?

Fuze
Возможно и спутали. А вы читаете это нормально, когда человек месяцами не выходит на связь?
#12 Складчина с уточнением ТЗ на обновление/переписывание Биллинга 3 сентября 2020 в 14:25

Имеет право на всё, что Вы перечислили и никакое поведение автора не лишает его авторских прав.

Asket
Тогда предлагаю провести опрос — кто за то, чтобы раскодировать компонент? По сути это будет нулл. По крайней мере он сможет работать на php7.
Все получат исходный код смогут доработать компонент конкретно под свой проект, а если нет знаний в PHP, то нанять на фрилансе и доработать.
#13 Складчина с уточнением ТЗ на обновление/переписывание Биллинга 1 сентября 2020 в 17:29
Поскольку тоже пользуюсь биллингом, выскажу свое мнение.

1. Разработать аналогичный компонент — с учетом всех хотелок, полагаю, должно стоить 400К+.
2. Компонент нарушает лицензию GPL, под которой распространяется InstantCMS, — код должен быть открыт.
На этот пункт существует много холиваров (как же разработчик будет себе на хлеб зарабатывать и т.д.)
Как это было в Joomla: forum.joomla.org/viewtopic.php?f=381&t=163492
К чему в итоге пришли: docs.joomla.org/Extensions_and_GPL
То есть: если вы выложите на JED закодированный компонент — его просто удалят.
Тем не менее это не мешает тысячам разработчикам расширений под Joomla создавать коммерческие расширения и зарабатывать на них.

3. Не смотря на формальную часть, есть ли у нас моральное право раскодировать Биллинг, продолжив его развитие?

Я считаю, такое право появляется если выполняется одно из условий:
а. Автор дал добро и не намерен больше заниматься продуктом своего интеллектуального труда.
б. Автор забросил расширение, игнорирует его поддержку, не выпускает обновления, не выходит на связь с покупателями и т.д.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.