Jump to content

Desti

Актив
  • Регистрация

  • В сети

Everything posted by Desti

  1. Для начала вам надо разобраться с классами в php, без этого будет невозможно понять устройство и функционирование движка форума. А поскольку движок еще и глючный, иногда будет очень сложно понять, что вообще происходит Посмотрите youtube - "classes in php", там есть много хороших курсов.
  2. Весь ISP построен на классах, поэтому ваша задача найти файл, который отвечает за исполнение функции, которую вы хотите изменить/заменить. Например, вы хотите изменить что-то в логике галереи при показе изображения. После недолгих поисков вы найдете файл modules/front/view.php и в нем функцию manage(), которая отвечает за показ изображения. Теперь надо сказать инструменту разработчика, какой класс вы хотите изменить. Смотрим в первые строки файла view.php и видим: namespace IPS\downloads\modules\front\downloads; - нашли первую часть головоломки. Теперь смотрим ниже - class _view extends \IPS\Content\Controller - вторая часть головоломки. Убираем '_', получаем полное имя класса IPS\downloads\modules\front\downloads\view Отлично, класс найден. Теперь идем в инструменты разработчика на созданном нами плагине, закладка hooks, нажимаем create hook и заполняем поля как нам надо: Hook Type: Code plugin Class to extend: downloads\modules\front\downloads\view (IPS\ уже есть) Filename: downloadsViewHook Жмем Save, если не ошиблись, то на экране появится наш новый хук, а в директории hooks плагина файл downloadsViewHook.php Теперь надо кликнуть на карандаш и войти в режим редактирования хука. Слева список функций, которые мы может изменить нашим хуком, справа поле редактирования. Находим в начале списка функций manage() и один раз кликаем на ней. Справа в окне появляется шаблон нашего хука с новой функцией. Опа пока ничего не делает, просто вызывает родительскую функцию, но наш код уже работает. Теперь у вас есть два пути: вызвать родителя и потом добавить/изменить что-то в данных, которые он создал, либо удалить return parent::manage();, полностью скопировать код из оригинальной функции и отредактировать его. Первый путь, по мнению разработчиков движка, считается правильным, т.к. не изменяет родительский код и позволяет строить цепочки хуков, второй путь - путь джедая, вы берете на себя ответственность за то, что цепочки хуков к этому классу работать не будут и это будет единственный хук для этого класса. Выбираете свой путь, пишете свой код, радуетесь жизни.
  3. Не совсем понятно, про какой пакет речь.. Если вы хотите пересобрать приложение или плагин, то в dev режиме у вас появятся пункты меню: Внесите изменения, нажмите их подряд и потом выйдите из режима dev, приложение будет перестроено и активировано.
  4. Это скорее норма, чем ошибка. Я уже вам говорил, что IP с разницей в одну цифру в последней группе физически могут располагаться на разных континентах. Предлагать более выгодные условия, наверное?
  5. Вы спрашиваете про штатные функции движка, а в пример приводите стороннее приложение. Сделал он это просто, добавил поле для значения по умолчанию и хранит его в свойствах поля. А в движке нет поля по умолчанию, его можно туда добавить хаками формы и обработчика, но это не "как-то малой кровью".
  6. Судя по всему таких функций штатно нет. Если у вас свое приложение, то можно пробежаться по $member->profileFields() и установить в нужном 0, если там NULL.
  7. Desti posted пост в теме in Interface
    а... я думал, под 8-ку работает.. Там что-то сильно поменяли в работе с сессиями, надо разбираться..
  8. Desti posted пост в теме in Interface
    Ну и мне киньте, даже интересно, почему не работает. Обнаружил только то, что в php7 сессии живут в базе, а в 8-м - там, куда указывает Data Storage Method.
  9. Desti posted пост в теме in Interface
    Дома еще гляну.
  10. Desti posted пост в теме in Interface
    да вроде работает и там и там после такой правки.
  11. Desti posted пост в теме in Interface
    Там банальные ошибки, поставьте обратный слеш ( \ ) перед всеми функциями call_user_func_array() и func_get_args() в hooks/tgenerator.php и всё заработает под php 8.0
  12. Desti posted пост в теме in Interface
    Можно, конечно, поставить php8 и проверить... Попозже.
  13. Desti posted пост в теме in Interface
    С такими цифрами даже реальный форум будет тормозить
  14. Восстанавливать не надо, она (_new) не нужна для 4.6, это просто какая-то промежуточная фигня для апгрейда.
  15. Desti posted пост в теме in Interface
    Потому что он сидит на dispatcher/front/init() и дергается при каждом обращении к функциям фронта.
  16. Desti posted пост в теме in Interface
    На 4651 нормально установилось и запустилось.
  17. Desti posted пост в теме in Interface
    Глазастый какой да, я не то скопировал.. строку 59 заменить на $getMembers = \IPS\Db::i()->select( 'core_members.member_id', 'core_members', $whereMembers, $order, $limit )->join( 'core_sessions', 'core_sessions.member_id=core_members.member_id' )->join( 'core_groups', 'core_members.member_group_id=core_groups.g_id' )->setKeyField( 'member_id' );
  18. Desti posted пост в теме in Interface
    2 строки с 26 заменить на # Check if we got max members online $sessionsMembers = \IPS\Db::i()->select( 'core_sessions.id,core_sessions.member_id,core_sessions.member_name,core_sessions.seo_name,core_sessions.member_group,core_sessions.is_generated,core_sessions.generated_expire', 'core_sessions', $where, 'core_sessions.running_time DESC', 60 )->join( 'core_members', 'core_members.member_id=core_sessions.member_id' )->join( 'core_groups', 'core_members.member_group_id=core_groups.g_id' )->setKeyField( 'member_id' ); $memberCount = \IPS\Db::i()->select( 'count(*)', 'core_sessions', $where, 'core_sessions.running_time DESC', 60 )->first(); Строку 59 заменить на $getMembers = \IPS\Db::i()->select( 'core_members.member_id', 'core_members', $whereMembers, $order, $limit, NULL, NULL, \IPS\Db::SELECT_SQL_CALC_FOUND_ROWS )->join( 'core_sessions', 'core_sessions.member_id=core_members.member_id' )->join( 'core_groups', 'core_members.member_group_id=core_groups.g_id' )->setKeyField( 'member_id' ); 3 строки со 117 заменить на $sessionsGuests = \IPS\Db::i()->select( 'core_sessions.id,core_sessions.member_id,core_sessions.member_name,core_sessions.seo_name,core_sessions.member_group,core_sessions.is_generated,core_sessions.generated_expire', 'core_sessions', $whereGuest, 'core_sessions.running_time DESC', 60); $maxGuest = isset( \IPS\Settings::i()->tGenerator_max_guests ) ? \IPS\Settings::i()->tGenerator_max_guests : 0; $guestCount = \IPS\Db::i()->select( 'count(*)', 'core_sessions', $whereGuest, 'core_sessions.running_time DESC', 60)->first; Все заботает, пользатели (гесты) в активности появляются. Но если нет трафика мемберов на тестовом сайте, они не появятся.
  19. Desti posted пост в теме in Interface
    Да там пару строчек подправить надо, проблема известная и легко решаемая, зачем такое покупать???
  20. Для любителей ставить снежинки на форумах есть отдельный котел в аду Но всё равно спасибо. by_ix это яваскрипт, он на всех 4.х работать должен.
  21. Строчка \IPS\Session\Front::i(); лишняя, можно удалить. Если размещать файл не в корне, то надо указать правильный путь к init.php, типа require_once '../../init.php';
  22. <?php \define('REPORT_EXCEPTIONS', TRUE); $_SERVER['SCRIPT_FILENAME'] = __FILE__; require_once 'init.php'; \IPS\Session\Front::i(); \IPS\Db::i()->update( 'core_permission_index', array('perm_3'=>''), array( 'perm_id=? and perm_type_id=?', 114, 29 )); Создайте файлик в корне, вызывайте через cron
  23. Теоретически работает на всех >4.1. Если заглючит, просто удалить строку cназванием приложения из таблицы core_application
  24. Desti posted пост в теме in Invision Community 4 Support
    не бывает, но пусть будет так.
  25. Desti posted пост в теме in Invision Community 4 Support
    Не ищите проблему там, где ее нет. В базе живут настройки файловой системы, у вас точно совпадают полные пути к старому форуму и новому?