Полная версия этой страницы:
Пишем форум
Ну так и вот.
Лично мне не нужна такая функциональность и глюкавость, как на ИПБ или ПХПББ. Зато нужны фрмулы и картинки. Картинки - это специальный формат хранения изображений на базе хмл и объектов. Удобно для рисования всяких физических схем - тележек, блоков, решеток и т.д.
Соответственно, объявляется клич. Кто готов за это взяться? Сроки на реализацию базовой функциональности - месяц.
Имя я уже придумал... fforum (физический форум).
моно, достаточно все будет делать модулями... тогда все можно будет реализовать...
Подвисло как-то сие благое начинание... Короче, сегодня вечером начинаю забатывать потихоньку. Сначала сделаю картинки, там посмотрим.
kdmitrie
10.6.2006, 16:59
Ну, начнем потихоньку...
Соображения следующие:
1. Размещаемся на генфизе, туда больше всего людей в случае необходимости может поиметь доступ.
2. Необходимо сразу предусмотреть возможность встроить форум в любой пхп-сайт в качестве модуля. Поэтому все имена функций и глобальных переменных идут с префиксом ff_.
3. По той же причине операторы echo, print и подобные не используем. Все выводим в переменную $ff_out, которую уже потом можно вывести куда угодно.
4. На классы забьем, т.е. не используем.
5. БД - как минимум MySQL4.1, т.е. поддерживающая вложенные запросы. Удобно. Хотя, на генфизе как бы не 3-я стоит...
6. Форум должен быть самодостаточным. Это значит, нельзя использовать какие-то уже имеющиеся модули. Как минимум надо переобозвать функции с префиксами.
7. Отдельный класс модулей - interfaces, в эти модули выносится все, что не может быть в какой-то мере универсально. Например - авторизация, понятно, что в конкретной схеме можно хотеть сделать ее по-разному. Или вообще без нее обойтись. А вот формулы и картинки можно сделать универсально.
8. Дизайн - должен быть не пересекающимся в плане css и javascript ввиду возможности использования форума внутри имеющейся страницы. Поэтому их тоже делаем с префиксами.
Даты - 20 июня надо запустить первое приближение. Самое сложное - точно хорошо продумать модель, чтоб потом не переписывать, остальное приложится.
И если кроме Diverа ко мне кто-то присоединится, то будет совсем хорошо. Ибо работа большая.
1. есть проблема, там недавно сгорел блок питания, поэтому сервак будет переноситься на другую машинку после сессии... так что лучше размещать где-нить еще...
2. Вообщем-то согласен, хотя это можно еще и решить другим путем: создав один массив со всеми настройками (т.е. глобальные переменные мы таким образом уберем...) а вот с функциями прийдется так и поступить...
3. ну... еще есть выход номер 2: буферизация вывода...
4. на самом деле они-то как раз и могли бы решить проблему с пространством имен функций...
5. Полностью за!!!
6. +1
7. ну.... проще говоря, разделить все на ядро и плагины...
8. +1. можно так же все генерить скриптом, чтобы он подставлял правильные имена...
kdmitrie
11.6.2006, 10:18
1.1. Ну тогда на дубине. В крайнем случае - на аеске, но я этого не хочу. Можно на лаб.аеске, там правда инет не очень, но потянет.
1.2-3. Это удобно. Так и сделаем.
1.4. Думаешь с классами будет удобней? Вообще наверно да.
1.7. Именно так. Причем плагины должны быть максимально понятно написаны и хорошо закомментированы, чтоб потом можно было сходу что-то свое написать.
1.8. Да. Причем имя префикса при желании можно менять тогда.
1.9. Имеется страница index.php, которая реализует собственно форум. Все остальное инклудится в нее при необходимости в зависисмости от параметра act.
Ну вроде насчет основных положений все проясняется. Теперь насчет структуры.
Нулевое приближение.
2.1 Авторизацию пока не делаем, т.е. кто угодно пишет что угодно куда угодно.
2.2 Структура самого форума мне очень нравится на флокале. То есть, весь форум состоит из нескольких разделов. Каждый раздел содержит несколько форумов, каждый из таких форумов - несколько тем. В каждой теме есть посты и, что важно, к каждому посту есть комментарии, которые показываются если нажать на ссылку "показать/добавить комментарий". Оказывается очень удобно вести в одной теме такое 2-мерное обсуждение.
2.3 Все выше означенное счастье лежит в 1 таблице, с индексацией, конечно. Есть поле type - тип записи из 5 выше приведенных. Поле pid указывает на id parent-а, таким образом создаем какое угодно дерево. Поле owner указывает на id владельца, пока оставляем его пустым. Поле text и name - пояснять не нужно. Для постов и комментериев поле name не определяется.
2.4 Создаем базовую структуру через phpmyadmin, делаем возможность добавления постов через форум.
Сроки на раелизацию - 2-3 дня после того как определимся с хостингом.
kdmitrie
11.6.2006, 12:50
Ну, я потихоньку начал.
Значит так. Все пути обозначены как $ff["path_***"]. Все, что касается sql - как $ff["sql_***"]. В include будут лежать mysql.inc, потом - и postgresql.inc; в них - основные sql-функции, но сделанные типично для каждого типа БД. В interface - настройки. Щас я туда выложил пароли.
Цитата(kdmitrie @ 11 июня 2006г. - 13:50)
Значит так. Все пути обозначены как $ff["path_***"]. Все, что касается sql - как $ff["sql_***"]. В include будут лежать mysql.inc, потом - и postgresql.inc; в них - основные sql-функции, но сделанные типично для каждого типа БД. В interface - настройки. Щас я туда выложил пароли.
Аналогично для ссылок: $ff["url_***"]
Я пока в основном буду готовиться к электроду, так что что-то смогу делать вообщем-то только после 17-го... конфиги предлагаю хранить в configs.inc
И еще, во всех ссылках на директории и т.п. предлагаю не дописывать в конце слеш, т.е. для
http://mail.ru/ ссылка будет выглядить
http://mail.ru, аналогично для директорий (к примеру для /usr/local/etc/ будет /usr/local/etc)
kdmitrie
12.6.2006, 23:14
Добавил таблицу posts, в ней лежит вся структура форума. В соответствии вышеуказанной концепции, она имеет поля: id, text, name, pid. Поле type может быть g,f,t,p,c; по умолчанию - р. (group, forum, topic, post, comment). В дальнейшем надо добавить owner и date. И индексировать это счастье надо очень злостно.
Добавил поддержку языков. В папке lang будут лежать переводы. Файлы переводов должны иметь формат <countrycode>-<encoding>.inc. Для английского <encoding> не ставится, ибо не нужен.
В корне создал симлинк на .htconfig - файл .htdefault. Когда закончим форум, он будет анализировать переменную $ff и если что не так, изменять или дополнять по дефалту.
Целесообразно сделать слои, как на флокале. То есть, модер имеет право не только удалить пост, но и снести его в ниже лежащий слой. А у юзеров в настройках прописывается, какие слои они видят.
kdmitrie
14.6.2006, 23:52
Я сделал отображение списков групп форумов и форумов. Также отображение тем. Пока это все, естественно, без футеров-хедеров. Доступно по адресу:
FForum.
Идеалогия немного поменялась. Теперь структура форума такая:
\
.htaccess
.htconfig - главный конфиг
.htdefault - конфиг по дефалту
.htinclude - инклудит все базовые библиотеки, которые лежат в include
index.php
NOTES
css\ - css, доступна из браузера
design\ - структура страницы, основные элементы + дополнительный html
images\
include\ - библиотеки
lang\ - локализация
modules\ - модули; каждый отвечает за отдельный тип страницы, инклудится в index.php в зависимости от параметра act
офигеть...
я бы даже так сказал
или все же вот так
kdmitrie
19.6.2006, 19:44
Цитата(Нася @ 19 июня 2006г. - 11:10)
Тебе нравится?
впечатляет!
kdmitrie
20.6.2006, 15:43
Ну, пока только мало что работает... А почему не флудим?
Цитата(e-solo @ 20 июня 2006г. - 16:04)
прошу, маэстро!
kdmitrie
27.6.2006, 22:49
Ну что, может допишем все-таки? В перерывах между пересдачами по электроду?
гг, теперь можно писать и не в перерывах
kdmitrie
30.6.2006, 23:27
ff_GetParam надо переименовать в ff_getparam
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.