За последние 24 часа нас посетили 20313 программистов и 1012 роботов. Сейчас ищет 431 программист ...

Список web-контактов и расширяемый профиль пользователя

Тема в разделе "Решения, алгоритмы", создана пользователем Hight, 25 май 2010.

  1. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Разрабатываю профиль пользователя. Столкнулся с "китайской" задачкой: необходимо составить наиболее полный список возможных web-контактов пользователя. Желательно ещё представлять как они выглядят!

    Для справки - все контакты хранятся в сериализованном массиве вида:
    PHP:
    1. <?php
    2. $new_user['contacts'] = serialize(array('website' => NULL, 'icq' => NULL, 'aim' => NULL, 'yim' => NULL, 'msn' => NULL, 'jabber' => NULL, 'skype' => NULL));
    3.  
    И т.д.

    Гуголь дал понять, что этой дряни много. Примерчик из квипа:
    [​IMG]
    Делать расширяемый профиль не хочу. Пока не хочу. Сам в интернетах контактов имею предельно мало и не знаю как выглядит тот или иной адрес.

    Если кто-нибудь зарегистрирован в какой-нибудь системе обмена сообщениями или социальной сети - пришлите мне ЛС с образцом адреса. Буду благодарен.

    Теперь по расширяемому профилю. Ограничения существующей реализации понимаю. Думал над расширяемым профилем. Смысл такой:
    1. Где-то в админке есть раздел, где можно можно рулить полями профиля.
    2. Есть табличка в бд. В ней содержаться данные о полях профиля. Что-то типа этого: id | type | min_length | max_length | и т. д. В этой табличке описываем поле: текст или нет, кол-во символов, нужен ли редактор и т. д.
    3. Есть табличка с данными профиля пользователей. Примерно такая: user_id | поле_id | value

    Думаю идея ясна. Кто-нибудь подобное делал? Может есть какой-нибудь движок оупенсорсный где можно реализацию посмотреть? А то приспичило мне сегодня =) Хочу красиво сделать.
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    на счёт формата контактов не знаю.
    если для каждого юзверя свои поля, то кешировать в виде сериализации в таблице профилей конкретного юзверя
    если для всех одинаковые, ну таблица норм. для вывода кешировать её в массив опять же.
     
  3. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Поля профиля для всех должны быть общими.
    Ничего кешировать не надо. Что за мания всё кешировать. Скоро кеш будут кешировать, если уже не кешируют. Когда надо дёргаем данные из бд и не паримся.

    Я нашёл реализованный расширяемый профиль в ipb. Сейчас переделываю на свой лад. Насчёт ipb - ребята курили, много, регулярно.

    С расширяемым профилем мне, вроде, пока, всё понятно. Сделаю, расскажу как делал.

    Теперь у меня новая задачка - вынести настройки пользователей из таблицы `users`. Смысл этого действа: Некоторые модули требуют своих настроек, индивидуальных для каждого пользователя. Делать для каждого модуля свои таблички в БД не айс. Можно, конечно, так сейчас и сделано.

    Сейчас у меня в таблице `users` есть некоторый набор настроек. Но он избыточен. Например при отсутствии модуля "личные сообщения" несколько полей в таблице нафиг не упали. Надо избавляться.

    Для этого необходимо придумать какую-нибудь универсальную систему хранения настроек пользователя. То-есть - добавляем модуль, он добавляет куда-то всем пользователям свои настройки и всё это можно поправить в профиле.

    Думаю...
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    в отдельной таблице дефолтные настройки модулей и во вторую складывать настройки юзеров?
     
  5. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Luge
    Настройки модулей лежат в таблице `config` вместе со всеми другими настройками. Что-то типа реестра. Но некоторые модули требуют индивидуальных настроек для каждого пользователя. То-есть, например, модуль личных сообщений должен знать, а разрешил ли ты приём личных сообщений у себя или нет. Для этого требуется расширяемое хранилище настроек пользователей. Куда модуль мог бы внести свои настройки для каждого юзера. Сижу думаю.
     
  6. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Это всё надо, чтобы не гадить в таблице `users`.
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    на модуль может быть несколько настроек или всегда одна?
     
  8. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    тебе не надо, чтобы модуль сам вносил данные в аблицу настроек юзера. Тебе достаточно использовать дефолтные, если юзер ничего не настроил и брать пользовательские, если они вообще есть

    можно вообще банально:
    [sql]CREATE TABLE `settings` (
    `module_id` int(10) NOT NULL,
    `setting_id` int(10) NOT NULL,
    `user_id` int(10) NOT NULL,
    `value` enum('yes','no','hz') NOT NULL
    )[/sql]
     
  9. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    а что это будет? обмен сообщениями через браузер, типа аська в браузере? прикольно ато у нас в универе не дают аську на компы ставить) а браузер с инетом есть)
     
  10. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Padaboo
    сделай джаббер клиент :)
     
  11. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    о_О
    пока смотрел наткнулся еше на какой то:
     
  12. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    vCard — это всего-лишь формат представления данных, понимаемый многими программами. Так же, как и hCard — представление формата vCard в формате xml для публикации в html, rss и т.д. и т.п.
     
  13. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    может тут найдешь, вроде похожая фишка с модулями
     
  14. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Hight
    так а в чём тогда проблема возникает? у тебя же всё сделано =)
    кешировать не помешает, это же статика по сути.

    по настройкам. я делал просто. имеется табл. с настройками. табл. с найтроками юзверя. Опять таки, это фактически статика, так что всё кешировалось прямо в табл. юзверей =)
     
  15. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Mr.M.I.T.
    Да, ты прав. Потихоньку сделаю всё. Эх, клонировать бы себя, чтобы всё успевать.
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    на icq.com есть броузерный клиент. icq2Go называется.