Возраст в версии 2.x

Поиск по возрасту работает некорректно

 
Посетитель
small user social cms
Медаль
Сообщений: 574
Фильтр по пользователям не ищет людей, если задать четко их возраст. Например, выставляем возраст в фильтре "от 18 до 18" - 18-летних не находит. Если задать "от 18 до 19" - то находит 18-летних.
Как исправить?
Новый Макхост - быстрый и надежный хостинг для любых проектов. 3 месяца хостинга бесплатно (тариф Мак-10) по промокоду SEARCHGURU
Посетитель
small user social cms
Медаль
Сообщений: 574
3 года как с куста, а ошибка осталась smile

В общем, если вдруг кому-то важно, чтобы в поиске корректно искались пользователи (ищем от 18 до 18 - находит 18-летних, а не как сейчас), то решение вот такое:

В файле system/core/model.php надо добавить строчку $value = intval($value)+1;

Код PHP:
  1. public function filterDateYounger($field, $value, $interval='DAY'){
  2. if (!strstr($field, '.')){ $field = 'i.' . $field; }
  3. $value = $this->db->escape($value);
  4. $value = intval($value)+1;
  5. $interval = $this->db->escape($interval);
  6. $this->filter("$field >= DATE_SUB(NOW(), INTERVAL {$value} {$interval})");
  7. return $this;
  8. }
Редактировалось: 1 раз (Последний: 14 февраля 2018 в 09:55)
Новый Макхост - быстрый и надежный хостинг для любых проектов. 3 месяца хостинга бесплатно (тариф Мак-10) по промокоду SEARCHGURU
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 804
alkokrolik:
3 года как с куста, а ошибка осталась

точно, есть такое. Добавил, теперь норм ищет, только это же файлы движка, может на Гит предложите исправление.
Редактировалось: 1 раз (Последний: 14 февраля 2018 в 12:18)
Самые дешевые и быстрые VPS | Продвижение в соцсетях
Посетитель
small user social cms
Медаль
Сообщений: 574
Андрей:
точно, есть такое. Добавил, теперь норм ищет, только это же файлы движка, может на Гит предложите исправление.
Честно говоря, я не уверен, что это правильное решение. Просто мне надо было и подсказали, вроде работает.
Новый Макхост - быстрый и надежный хостинг для любых проектов. 3 месяца хостинга бесплатно (тариф Мак-10) по промокоду SEARCHGURU
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4116
Поправлю в релизе.
А пока в файле /system/fields/age.php аналогичное условие заменить на

Код PHP:
  1. if (!empty($value['to'])){
  2. $model->filterTimestampYounger($this->name, $value['to'], $this->getOption('range'));
  3. }
а в файле /system/core/model.php добавить метод

Код PHP:
  1. public function filterTimestampYounger($field, $value, $interval='DAY'){
  2. if (strpos($field, '.') === false){ $field = 'i.' . $field; }
  3. $value = intval($value);
  4. $interval = $this->db->escape($interval);
  5. $this->filter("TIMESTAMPDIFF({$interval}, {$field}, CURDATE()) <= {$value}");
  6. return $this;
  7. }
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
Медаль
Сообщений: 574
Fuze:

Поправлю в релизе.
А пока в файле /system/fields/age.php аналогичное условие заменить на

Код PHP:
  1. if (!empty($value['to'])){
  2. $model->filterTimestampYounger($this->name, $value['to'], $this->getOption('range'));
  3. }
а в файле /system/core/model.php добавить метод

Код PHP:
  1. public function filterTimestampYounger($field, $value, $interval='DAY'){
  2. if (strpos($field, '.') === false){ $field = 'i.' . $field; }
  3. $value = intval($value);
  4. $interval = $this->db->escape($interval);
  5. $this->filter("TIMESTAMPDIFF({$interval}, {$field}, CURDATE())
  6.  

Это в дополнение к тем действиям, что я описал или вместо них?
Редактировалось: 1 раз (Последний: 14 февраля 2018 в 13:47)
Новый Макхост - быстрый и надежный хостинг для любых проектов. 3 месяца хостинга бесплатно (тариф Мак-10) по промокоду SEARCHGURU
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 2787
В дефолтных файлах /system/fields/age.php и system/core/model.php без ваших правок надо внести правки.
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.