Перейти к контенту

Как передать значение из класса Topics


Рекомендуемые сообщения

Вообщем история такова:

в классе Forums у меня формируется значение. Его необходимо передать в класс Topics(), точнее когда открывается любой топик. Через ссылку топика передать не подходит т.к. на момент формирования ссылок топиков в Forums.php это значение ещё неизвестно или, так скажем, известно не до конца. Через глобальную переменную также нельзя т.к. вызов топика происходит через index.php, в котором все глобальные переменные очищаются.

Как быть? :D

Ссылка на комментарий
Поделиться на других сайтах

А что конкретно пытаешься сделать?.. В принципе, такие глобальные переменные передаются обычно через куки там и т.п. :D
Ссылка на комментарий
Поделиться на других сайтах

В Boards.php

есть переменная ну, например, $this->variable

мне надо её использовать в Topics.php

Обычно передают всё через ссылки, но на момент формирования ссылок, её значение ещё неизвестно.

Через глобальную переменную её также нельзя передать т.к. глобальные переменные очищаются и пересоздаются в index.php (в начале файла) - ведь topics.php "запускается" из index.php!

Через куки можно, но плохо двумя моментами:

1) увеличивается входящий трафик на сервак (денюжка :D )

2) мне надо иметь по одной переменной на каждый раздел. Допустим пользователь открыл раздел, нужное число сохранилось в кук "variable", прочиталось в Topics.php, всё ок. Но если юзер откроет сразу много разделов в разных окнах? Он вполне может это сделать! Тогда кук перезапишется и в нём будет последнее значение. А пользователь переключится в первое окно, где это число вовсе не соответствует последнему сохранённому в куке ;) И вот уже ошибка. Кроме того кук такая вещь ненадёжная.. в одном окне запишется, во втором нет, в третьем с запозданием (всё зависит от того как хорошо доступна конкретная страница топика).

Можно ли передать как-то переменную из класса в класса на стороне клиента? без использования обработки на сервере (куки, база)

Ссылка на комментарий
Поделиться на других сайтах

Можно ли передать как-то переменную из класса в класса на стороне клиента? без использования обработки на сервере (куки, база)

PHP работает только на сервере и не о каких "из класса в класса на стороне клиента" и речи быть не может. Далее куки это всегда клиент, не нравятся куки используй механизм сессий (в IPB они все равно повязаны на куки).

Если открывает много и сразу, хранить надо не одну пепременную, а ассоциативный массив

 

И вообще напиши проблему полностью, что хочешь и почему пошел так...

Ссылка на комментарий
Поделиться на других сайтах

Мне надо маркировать форум прочитанным после того как пользователь просмотрит все новые для него топики.

Сейчас это выглядит так: юзер смотрит топик, состояние топика меняется с "нового" на "неновый". Если даже юзер просмотрит все топики и в форуме не останется ни одного нового топика, форум всё-равно не пометится на прочитанный т.к. собственно "пометка форума прочитанным" происходит при чтении топиков. Читается список топиков, и если там нет новых, то форум маркируется прочитанным.

Поэтому сейчас получается так:

1) Пользователь зашёл в форум. Видит непрочитанный форум

2) Заходит в него, читает все новые для него топики

3) Возвращается в root, форум всё-равно остался непрочитанным!

4) Он снова в него заходит и вот только теперь форум делается прочитанным, но сам этот шаг 4-ый не нужен пользователю т.к. фактически в форуме не осталось уже ни одного "полезного" непрочитанного сообщения, т.е. он нужен только для того, чтобы промаркирвать форум прочитанным, что есть лишнее действие, лишний трафик и лишнее раздражение. А если этого не делать, то юзер попросту путается.

 

Как я хочу сделать:

В Forums.php собирается кол-во новых постов для пользователя.

Я передаю это число в Topics.php.

При клике на пост, определяется новый ли это пост для юзера (точнее для данной ситуации, когда он его уже посмотрел - был ли он новым постом для него). Если да, то вычитаем из этого числа единицу. Пользователь может посещать другие топики и новые и не новые, но число будет убавляться на единицу только если он прочитал новый для него пост. А далее проверочка: if (!$new_posts) { маркируем }

 

Вот..

С самого начала не написал, потому что это проблема выходит из стандартных исходников IPB. У нас это переделано.

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

Наверно, я пошёл в неправильном направлении. Надо что-то с запросом рубить..

Ссылка на комментарий
Поделиться на других сайтах

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

Просто записывай в куки массив чисел, соответствующих каждому форуму, при помощи serialize()

Ссылка на комментарий
Поделиться на других сайтах

Спасибо за советы. Сделал через запрос. Буду смотреть как он скажется на быстродействии.
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.