За последние 24 часа нас посетили 22824 программиста и 1242 робота. Сейчас ищут 768 программистов ...

MySQL версия форумного движка ExBB

Тема в разделе "Прочие вопросы по PHP", создана пользователем Николай12, 14 апр 2014.

  1. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Подскажите насчёт некоторых вещей:
    1) Есть класс url, который содержит методы для вывода ссылок на разные страницы форума, вот его код:
    Код (Text):
    1. <?php
    2. class url {
    3.     public static function index($params=array()) {
    4.         return URL."index.php?".self::parse_params($params);
    5.     }
    6.  
    7.     public static function cat($id, $params=array()) {
    8.         return URL."/index.php?a=index/cat&cat={$id}&".self::parse_params($params);
    9.     }
    10.    
    11.     public static function forum($id, $page=1, $params=array()) {
    12.         return URL."/index.php?a=forum&forum={$id}&page={$page}&".self::parse_params($params);
    13.     }
    14.    
    15.     public static function topic($id, $page=1, $params=array()) {
    16.         return URL."/index.php?a=topic&topic={$id}&page={$page}&".self::parse_params($params);
    17.     }
    18.    
    19.     public static function profile($id, $params=array()) {
    20.         return URL."/index.php?a=user/profile&id={$id}&".self::parse_params($params);
    21.     }
    22.    
    23.     public static function module($module, $action='index', $params=array()) {
    24.         return URL."/index.php?a={$module}/{$action}&".self::parse_params($params);
    25.     }
    26.    
    27.     public static function _url($params=array()) {
    28.         return URL."index.php?".self::parse_params($params);
    29.     }
    30.    
    31.     public static function parse_params($params) {
    32.         $string = '';
    33.         foreach ($params as $name => $value) {
    34.             $string .= "{$name}={$value}&";
    35.         }
    36.         return $string;
    37.     }
    38.  
    39.     public static function str2url($str) {
    40.         $converter = array(
    41.             'а' => 'a',   'б' => 'b',   'в' => 'v',
    42.             'г' => 'g',   'д' => 'd',   'е' => 'e',
    43.             'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
    44.             'и' => 'i',   'й' => 'y',   'к' => 'k',
    45.             'л' => 'l',   'м' => 'm',   'н' => 'n',
    46.             'о' => 'o',   'п' => 'p',   'р' => 'r',
    47.             'с' => 's',   'т' => 't',   'у' => 'u',
    48.             'ф' => 'f',   'х' => 'h',   'ц' => 'c',
    49.             'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
    50.             'ь' => '',  'ы' => 'y',   'ъ' => '',
    51.             'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
    52.             'А' => 'A',   'Б' => 'B',   'В' => 'V',
    53.             'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
    54.             'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
    55.             'И' => 'I',   'Й' => 'Y',   'К' => 'K',
    56.             'Л' => 'L',   'М' => 'M',   'Н' => 'N',
    57.             'О' => 'O',   'П' => 'P',   'Р' => 'R',
    58.             'С' => 'S',   'Т' => 'T',   'У' => 'U',
    59.             'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
    60.             'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
    61.             'Ь' => '',  'Ы' => 'Y',   'Ъ' => '',
    62.             'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
    63.         );
    64.         // переводим в транслит
    65.         $str = strtr($str, $converter);
    66.         // в нижний регистр
    67.         $str = strtolower($str);
    68.         // заменям все ненужное нам на "-"
    69.         $str = preg_replace('~[^-a-z0-9_]+~u', '-', $str);
    70.         // удаляем начальные и конечные '-'
    71.         $str = trim($str, "-");
    72.         return $str;
    73.     }
    74. }
    75. ?>
    Потом можно будет поменять виды ссылок или даже сделать ЧПУ с помощью плагина.
    Может использование методов этого класса для каждой внутренней ссылки отрицательно сказаться на производительности движка?

    2) Как лучше сделать проверку, прочитана ли тема?
    Есть варианты записывать информацию в куки или в базу...
    Если в базу - таблица с полями id, forum_id, topic_id, status (1 - прочитана, 0 - не прочитана)
    Если в куки, то сериализованный массив вида ID темы => Статус
     
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Если такой функционал действительно нужен для решения твоих задач, то падение скорости не должно тебя сильно парить. Тем более на таком микро-уровне.

    Я не знаю что лучше, но кука нерезиновая. Как минимум, надо заложить правило, что сильно старые темы автоматически считаются прочитанными и отметки о них убираются из списка. Список должен худеть.
     
  3. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Вставлю свои..
    С появлением HTML5 появилось и так называемое локальное хранилище, может туда это запихнуть?
     
  4. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    А что насчёт старых браузеров?

    Хотелось бы сделать максимально расширяемый, но при этом лёгкий и быстрый движок.
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Ты задачи по приоритетам уже расставил? Наметь план крупными вехами (майлстоунами), включай в ближнюю веху то, что реально важно.
    Очевидно поддержка фишек html5 это неприоритетная задача, но в дальнюю повестку дня можно включить чтобы не забыть.
    Вынос html из кода мог бы дать значительный эффект и это реально важно для "расширяемости" — в ближнюю веху. И так далее.

    Добавлено спустя 3 минуты 17 секунд:
    Лицензия у ExBB объявлена? Если GPL, то можешь смело копипастить хорошие куски из других движков под GPL. Просто упоминание добавь.
    Конкретно с прочитанными темами можешь из fluxbb дернуть. Там на мой взгляд неплохо сделано: есть пометка раздела целиком, есть устаревание.
     
  6. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Что хочу вообще сделать, и что буду делать в ближайших версиях уже определил.

    Можете скачать и посмотреть, как там всё устроено. В коде вообще нет HTML.
     
  7. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    А, ну здо́рово.
     
  8. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Нет, не объявлена. Репозитория тоже нет.
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    А во время установки лицензионное соглашение показывается? Хоть какое-то. Или на сайте, мб, при скачивании?
     
  10. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Тоже нет :(
    Сделаю в следующей версии нормальный установщик по шагам (сейчас белая страница с полями для параметров), и чтоб лицензия показывалась. GPL лучше для такой разработки?
     
  11. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Ты почитай вообще о лицензиях. Лицензия может быть и своя. А вот если хочется gnu/gpl, то иди на их сайт и кури, какая именно тебе больше подходит. Там их много видов и разъясняются нюансы.
     
  12. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
  13. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    Наверное «Attribution-NonCommercial» («Атрибуция — Некоммерческое использование») мне подходит. Хочу, чтобы другие разработчики могли изменять и дополнять код движка, но не могли его продавать. А вот плагины и модули можно было распространять и коммерческим путём.
     
  14. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    http://creativecommons.ru/faq#answer6
    Сорри! ))) Считай что это был легкий вход в заковыристый мир лицензий. Другие объяснялки менее понятные. Идем по нарастающей.
    Лицензия MIT, наверное самая свободная из специальных ПО лицензий: http://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D1%86%D0%B5%D0%BD ... %D1%8F_MIT
    Одобрена OSI: Да
    Совместима с GPL: Да
    Позволяет коду под другой лицензией линковаться: Да
     
  15. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    А еще открытое, свободное и бесплатное ПО - это не синонимы, а совершенно не связанные между собой понятия :)
     
  16. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    смерть старым браузерам :)
     
  17. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Ну хоть один человек думает в этом плане как я. Если браузер не успевает за прогрессом - это проблемы браузера, а не разработчика. Выдай пользователю надпись на весь экран с разъяснением, почему IE-6 гоуноу и ссылками на скачивание хрома/оперы/сафарей/лисички и пусть развивает кругозор.
     
  18. Николай12

    Николай12 Новичок

    С нами с:
    6 окт 2013
    Сообщения:
    47
    Симпатии:
    0
    А на счёт своей лицензии что? Можно написать любой текст?
     
  19. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    да, но если потом посадят, мы не виноваты :)
     
  20. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    За что посадят? Не говори чепуху.
     
  21. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
  22. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Оч актуально, когда правила распоряжения базисным кодом не были определены изначально. Хотя мне сдается, что там-таки какой-нибудь GPL, а автор плохо искал.
     
  23. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    http://uk.wikipedia.org/wiki/ExBB
    Ліцензія GPL

    судя по их форуму: http://exbb.info/community/index.php
    они вполне шевелятся, но сами свой форум не пользуют - любопытно :)
     
  24. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Их форум сделан как раз на exBB.
    Ну тогда и у автора GPL без вариантов :)
     
  25. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    ТЬфу, не внимательный, это просто скин жеж... приношу свои извинения.