Jump to content

vinegredz

Пользователи
  • В сети

  • Количество сообщений

    28
  • Reputation

    2 vinegredz's Reputation
  1. Здравствуйте. Пытаюсь ограничить доступ пользователей к разным записям в базе данных. Вот, что я сделал: Добавил поле "Partner ID" в профиль пользователя (тип число) со значением, например, "3" Добавил поле "Partner ID" (тип число) в базу данных Создал новую запись в базе данных, указав значение поля "Partner ID" равное 3 Мне нужно сделать так, чтобы в шаблон recordRow (который является циклом перебирающим строки из базы данных) попадали только те записи, у которых поле "Partner ID" совпадает со значением в профиле авторизованного пользователя. Сейчас я могу сделать вот так: {{if $row->customFieldDisplayByKey('partner') != \IPS\Member::loggedIn()->profileFields()['core_pfieldgroups_1']['core_pfield_3']}} Доступ запрещен {{else}} Доступ разрешен {{endif}} Но проблема в том, что это "пост фильтр". То есть в таблице у пользователя будут присутствовать строки к которым нет доступа и бывают ситуации, когда на одной странице у пользователя нет доступа ни к одной из записей. Вопрос: как повлиять на то, что попадает в $rows любой базы данных, чтобы на уровень раньше (а не в шаблоне вывода строк) добавить фильтр по значению поля "Partner ID"?
  2. Короче, проблема оказалось в неправильном пути до UNIX сокета, которые обслуживает подключение к БД. Странно, что все 5 сайтов которые я переносил работали в одном окружении, но у 2-х из 5-ти был другой способ подключения к БД. Для будущих поколений. Как проверить путь? Заходите в conf_global.php и там будет строчка: 'sql_socket' => '/var/run/mysqld/mysqld.sock', На старом и новом сервере окружение было разным, поэтому и работало. Благодарю всех за помощь!
  3. Короче на локалке сайт работает как надо. получается, проблема в окружении. Что я еще сделал: Пересоздал домен Сбросил конфиги apache и nginx Проверил работу логов php и nginx Сверил используемую версию PHP Заново выставил все доступы к файлам Но не работает. В логах на самом деле чистота. Сами логи точно работающие! Есть идеи куда ковырять? А, еще включал показ ошибок в браузере и ничего нового не увидел.
  4. ТП у меня нет. Сервер свой в стойке. Не думаю, что дело в окружении сервера, потому что прочие инстанты IPB работают без проблем после переноса...
  5. Здравствуйте. Я опытный пользователь IPB, но в этом случае столкнулся с тупиком. Была у меня VPS на которой крутилось 5 сайтов на IPB. Переезжали они все вместе, одинаковым способом на новый сервер. Из 5 сайтов 3 работает без проблем, а два не запускаются, как я только их не колупал. Все сайты на IPB старше 4.3 и работали на одинаковой версии PHP (7.3.11). Целостность бэкапов проверил. Вот что я пробовал сделать, чтобы восстановить работу сайтов, которые сейчас возвращают 500 ошибку (даже при заходе в админку): Еще раз восстановить файлы и базу данных из бэкапов Отключал SSL сертификат Удалял .htaccess файл Менял способ подключения к базе данных Менял доступы ко всем файлам сайта Менял владельца файлов Удалял файл constants.php Включал режим восстановления через constants.php Сбрасывал конфиги Apache и Nginx Отключал кеширование на уровне сервера Вот что сейчас в логах (которые точно работают, потому что если сломать все специально, то логи наполняются: /uploads/log/ пусто /var/www/myuser/data/logs/ пусто /var/www/httpd-logs/ пусто /var/log/apache2/access.log пусто /var/log/apache2/error.log пусто /var/log/nginx/access.log пусто /var/log/nginx/error.log пусто /var/log/mysql/error.log пусто Теперь даже и не знаю что делать...
  6. Здравствуйте. Я тут не могу никак разобраться. Мне нужно, чтобы таблицу загружалось максимум 8 записей из базы данных. Чтобы PHP при работе с базой данных остановил работу, сразу как достигнет 8 записей. Нужно что-то вроде LIMIT из MySQL, только для фреймфорка IPS. Посмотрел в исходниках много мест где используется Table Helpers, но не нашел нужной функции в классе. Мой код, который выводит таблицу: {{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records2', $record->url());}} {{$table->limit= 8;}} {{$table->pages= 1;}} {$table|raw} Кто может подкинуть решение?
  7. Здравствуйте. Есть в базах данных поля типа Relate (связь с базой данных), где можно начать вписывать titile записи и будет срабатывать автозаполнение. Заметил, что после сохранения/создания записи порядок добавленных в такие поля записей нарушается. Посмотрел, что в //system/Helpers/Form/item.php и не нашел там смешивания среди параметров. protected $defaultOptions = array( 'class' => NULL, 'permissionCheck' => 'read', 'maxItems' => NULL, 'orderResults' => 'etc', 'itemTemplate' => NULL, 'containerIds' => array(), 'minAjaxLength' => 3, 'where' => array() ); Подскажите, пожалуйста, в чем проблема и как изменить поведение полей такого типа по умолчанию?
  8. Здравствуйте. Отправляю POST запрос на создание новой записи в базе данных. URL такого вида: https://site.com/api/cms/records/12? В ответ приходит такое: { "id": null, "title": "photo", "category": { "id": 24, "name": "Photos", "url": "https:\/\/site.com\/tools\/photos\/", "class": "IPS\\cms\\Categories12", "permissions": { "perm_id": 268, "perm_view": "4,6,2,3", "perm_2": "4,6,2,3", "perm_3": "4,6,3", "perm_4": "4,6,3", "perm_5": "", "perm_6": "", "perm_7": "" } }, } Как видите в ответе все корректно, кроме поля id, которое со значение Null. Когда смотрю напрямую в базу данных, то создается запись с primary_id_field = 0. Система обновлена до последней версии. Подскажите, пожалуйста, где и как присваивается id так как оно (вроде) не автоинкрементируемое.
  9. Здравствуйте! Есть в IPB такая прекрасная штука как подстановка значений в поля формы. Это отлично работает в случае с текствоыми полями (record_meta_keywords), но не работает с полями типа relationShip с автозаполнением (content_field_64). URL такой: https://site.org/orders/?do=form&d=13&content_field_64=3&record_meta_keywords=Текст Я заметил, что поле, куда нужно вписывать данные не имеет атрибута name, я его добавил и получился такой URL, который тоже не работает: https://site.org/orders/?do=form&d=13&elInput_content_field_64_dummyInput=3&record_meta_keywords=Текст Пробовал вместе "3" передавать строку, но нифига. Я ожидаю, что это должно работать, потому что вот такая ссылка на создание нового диалога работает как надо и подставляется получатель: https://site.com/index.php?app=core&module=messaging&controller=messenger&do=compose&to=115 (сообщение получит пользователь с ID115) Подскажите, пожалуйста, решение.
  10. Решение задачи: {{if in_array( \IPS\Member::loggedIn()->member_id, explode("\n", $record->customFieldDisplayByKey('members_access')) )}}
  11. Здравствуйте! Верстаю шаблон для IP.Content. В базе данных создал поле типа "Пользователи" (в форме создания новой записи в базе данных можно вписать ники пользователей). Проблема в том, что мне нужно показывать div только тем, кто добавлен в это поле. Формат отображения поля такой — $formValue. Шаблон вот такой: {{if in_array( \IPS\Member::loggedIn()->member_id, array( $record->customFieldDisplayByKey('members_access') ) )}} Это видят те, кому открыт доступ. {{else}} Это видят те, кому закрыт доступ. {{endif}} Конечно, конструкция не работает, потому что между значениями member_id не хватает запятых. Но я никак не пойму, как мне эти самые запятые добавить, чтобы все заработало. Подскажите, пожалуйста.
  12. Спасибо, но это не много не то. Мне нужно просто числом вывести на страницу количество зарегистрированных пользователей. Например — 22565. Без виджетов и плагинов, так как не хочу засорять сайт.
  13. Здравствуйте! Хочу вывести в шаблон счетчик количества зарегистрированных на сайте пользователей. Нашел в виджете статистики такой параметр: {number="$stats['member_count']"} Но в итоге на сайте отображается цифра 0 и всё. Пониманию, что нужно что-то еще добавить, но не могу разобраться. Подскажите, пожалуйста, код который выведет количество пользователей в любом шаблоне сайта.
  14. Нет, к сожалению не меняется ничего.