Общая идеи и цели к порталу:
- Создание довольно мощного инструмента для быстрого создания качественных бизнес сайтов;
- Открытый код с понятными комментариями в каждой строчки, чтобы код читался на одном дыхании;
- Сделать портал все сторонним развивающим;
Основные человеческие истины которых требуется придерживаться
- Не твори зла;
Структура путей в портале
- /examples/ - экспериментальные примеры;
- /old/ - старые исходники;
- /prj/ - примеры проектов;
Структура путей SD Core, основной каталог sd
- /images/ - каталоге хранится графика для ядра;
- /admin/ - графика для администраторского кабинета;
- /bk/ - графика для задних фонов;
- /buttons/ - различные кнопки;
- /control/ - элементы управления;
- /ext/ - обозначения расширений файлов;
- /form/ - элементы управления для форм;
- /icons/ - иконки для стандартных модулей;
- /js/ - JavaScript`ы
- /php/ - здесь хранятся все общие объекты, которые легко можно использовать в других проектах // все стандартные и общие функции используемые практически во всех проекта;
- /reports/ - отчеты;
- /sound/ - звуки;
- /styles/ - всевозможные стили;
Структура путей проектов, основной каталог sd
- /base_doc/ - в таком каталоге хранятся все документы для каждого из проектов, каждый проект может иметь свой такой каталог, хранятся там чисто файлы, вручную туда практически ничего не вносится;
- /help/ - помощь по проекту, если таковая вообще существует;
- /images/ - изображения;
- /js/ - специфические скрипты для работы проекта;
- /php/ - специализированные настройки для каждого модуля/объекта;
- /reports/ - отчетные / печатные формы;
- /setup/ - любые специализированные настройки для проекта, внутри файла все параметры описаны;
- /sound/ - звуки для проекта если таковые имеются;
- /styles/ - всевозможные стили;
- index.php - начало любого проекта;
- index_tpl.php - основной шаблон дизайна для проекта, который натягивается на движок;
Обязательные стандарты
Правила:
- работа скриптов никак не должна быть связана с дизайном, ибо дизайн у всех разный, но работают все одинаково, тот же клик мыши никогда в на ближайшие 50 лет не отменит
- Специализированные функции для каждого проекта должны храниться в «/setup/func.inc.php»;
- Каждый проект должен работать вне зависимости от другого проекта, но все могут использовать глобальные функции и модули находящиеся в корневом каталоге / ядре;
- Название переменных должны назваться на правильно на английском/техническом (например: room вместо komnata), и нести смысловую нагрузку (например: text вместо t);
- Запрещено в конечных вариантов функций использовать операторы echo и print. Весь результат должен писаться в одну переменную. Это требуется для поддержания шаблонов;
- Во всех базах и таблицах использовать кодировку utf8_general_ci / UTF8
- В HTML тегах
не использовать свойство align из-за того что он не корректно работает в IE + отклонен в HTML 5.0
Приставки и окончания:
- Приставка: sd_ все функции начинаются с этой приставки от слова function, исключения только некоторые. Это мера для удобства чтения скриптов в дальнейшем;
- Приставка: $_ - все входящие в функцию параметры, должны начинаться с указанной приставки;
- Приставка: sd_db_ - содержание обозначает, что функция работает с SQL запросами;
- Окончание у файлов: _list - у файлов обозначает, что данный файл отвечает за просмотр данных;
- Справочник - список / таблица уникальных данных. Как правило справочник не ссылается на другие таблицы, а только другие ссылаются на этот справочник;
- Реестр - список / таблица данных с возможностью повторения одних и тех же значений с разными дополнительными параметрами например, дата. Как правило запись ссылается на другие таблицы/справочники;
// _____________________________________________________________________________
function sd_{NAME}()// что делает функция
// комментарий входных параметров
{
return;
}Техническая информация, желательно ее придерживаться:
- Располагать информацию таким образом чтобы она смотрелась удобно на PDA (320х240). Реализовано на уровне ядра.
- Где это не требуется или есть возможно этого избежать, неупотребление таблицы, либо сокращаться количество колонок;
- Дизайн на основе DIV запрещен! Из-за первого пункта;
- Придерживаться дизайна светлых тонов;
- Минимум графики, большую часть строить на основе HTML и JavaScript. Те же сложные таблицы;
- $_SESSION['user'] - все о пользователе в сложном массиве
- $_SESSION['rigth'] - все права на на текущий модуль или еще что либо хранятся в этом сложном массиве, вот перечень основных
- $_SESSION['rigth']['admin'] - true(1) - Имеются права администратора - основные права
- $_SESSION['rigth']['view'] - true(1) - Разрешено просматривать данные - основные права
- $_SESSION['rigth']['add'] - true(1) - Разрешено добавлять данные - основные права
- $_SESSION['rigth']['edit'] - true(1) - Разрешено редактировать данные - основные права
- $_SESSION['rigth']['erase'] - true(1) - Разрешено удалять данные - основные права
- $_SESSION['rigth']['config'] - true(1) - Разрешено конфигурировать и настраивать данный модуль. (то есть доступ к админке) - основные права
- $_SESSION['rigth']['print'] - true(1) - Разрешено формировать печатные ведомости - Права для удобства пользователя - если модуль такое поддерживает
- $_SESSION['rigth']['export'] - true(1) - Разрешено экспорт данных в другие источники - Права для удобства пользователя - если модуль такое поддерживает
- Для работы с базой достаточно вызвать стандартную sd функцию sdf_db_connect()
- Если в таблице нет полей surname_ch (фамилия изменившего) и Pu (Признак удаления ), то эта таблица полностью автоматическая и пользователь или администратор не имеют прав ее изменить.
- Рекомендуется в начале каждого модуля прописывать переменную $table для основной таблицы, в связи с тем, что название таблицы может поменяться, а в скриптах разбираться довольно затруднительно и занимает много времени.
- Все счетчики в системе должны иметь приставку Сounter_
- Делать проверки правильности ввода данных как на Java Script так и в PHP.
- Сразу делаем проверки на любой тип ввода. в плоть до ограничения количества ввода символов, что существенно сократит вероятность взлома.
-
Нельзя заводить логины начинающие с «_». Они являются зарегистрированными в системе. Например: _user, _login, _admin и так далее. Данные пользователи считаются системными.
- Не позволяет заводить двух одинаковых логинов, но Ивановых Иван Ивановичей может быть хоть сколько;
- В самой системе пароли не хранятся, поэтому ничего никому не высылается;
-
Введена система как автоматической регистрации так и по предварительномук модерированию. Это можно изменить теперь при помощи всего навсего одной галочкой в настройках сайта.
Обозначения в базе данных:
- g_ - глобальная таблица, значит к этой таблице может обратися любой проект. От слова global
- doc_, ori_ и т.д. - это обозначение к какому проекту относится та или иная таблица. К ней обращается только свой проект.
- IDимя_поля, обозначает, что поле не хранит в себе информации, а это ссылка на какую либо таблицу.
- В каждой таблице должно существовать поля:
- ID (int)- Уникальный номер.
- IDT (timestamp)- Дата и время последнего изменения. Атрибут: ON UPDATE CURRENT_TIMESTAMP. По умолчанию: CURRENT_TIMESTAMP
- login_active_id (int)- ID Номер пользователя, в главной базе пользователей. От «ID Login change»
- Login_ch (varchar30)- Логин (Автор, от Login change) последнего изменения записи. Эта фишка применяется для того чтобы знать последнего, кто и когда изменял запись. Также помогает в случае, если по каким либо причинам по ссылке login_active_id, пользователя более не существует.
- IDProject - ссылка на проекта. Это только для общих таблиц (с приставкой g_)
- Pu - Признак удаления. Это на тот случай, где физически запись не уничтожается.
Как должна выглядеть каждая функция:
// Краткий, но ясный комментарий, что делает функция
function sd_return_mode()<-f_ все функции начинаются с этой приставки от слова function, для удобства чтения в дальнешем кода скриптов;
{code...// Комментарий
code...// Комментарий
return ...// Комментарий, что возвращает функция, если возвращает
}Почему именно такой стиль определен?
Универсальная работа с каждым модулем:
- Любой модуль получает входящий режим работы через переменную mode. Например: ?mode=add. Получить этот параметр просто использовать глобальную функцию sd_return_mode(). Рекомендуется использовать эту единую функцию, чтобы иметь единую безопасность для всех модулей и усиливая ее, автоматически распространялась на все модули;
- Такая же функция как предыдущая sd_get('rec_id','int'). Возвращает ID номер записи с которой модулю нужно поработать. Например: ?mode=edit&rec_id=32. Модуль знает, что нужно отредактировать 32 запись.
- Команды для модуля:
- вызов без параметра - режим по умолчанию. (чаще всего список чего либо)
- new - вызывает форму добавления новой записи - требуются прав right_add или right_admin
- edit - вызывает форму редактирования записи (доп параметр rec_id) - требуются прав right_edit или right_admin
- add - добавляет новую запись - - требуются прав right_add или right_admin
- update - обновляет указанную запись параметром rec_id - требуются прав right_edit или right_admin
- delete - удаляет записи выделенные checked - требуются прав right_delete или right_admin
- остальные по функционалу усмотрению.
Замечания:
- Процедур в PHP не существует!
- & - приставка для разрешения изменять значения переменной внутри функции
- , но лучше использовать
- . Проверять это при тестировании
Перечень большенства функций в общем хранилище функций. Если в начале стоит include_once('/func.inc.php')
Эти функции вам помогут не изобретать велосипед...
Название функций Входящие параметры Описание sd_return_mode() Возвращает режим в котором должен работать модуль
sd_get('rec_id','int') Возвращает ID номер записи с которой модуль должен работать
sd_get($_name) _name - любое значение Возвращает '' при не некорректном параметре $_name. Правильно декодирует. Заменяет обычный $_GET
f_POST($_name) _name - любое значение Возвращает '' при не некорректном параметре $_name. Правильно декодирует. Заменяет обычный $_POST
sd_session($_name) _name - любое значение Возвращает '' при не некорректном параметре $_name. Правильно декодирует. Заменяет обычный $_SESSION
sd_request($_name) _name - любое значение Возвращает '' при не некорректном параметре $_name. Правильно декодирует. Заменяет обычный $_REQUEST
sd_server($_name) _name - любое значение Возвращает '' при не некорректном параметре $_name. Правильно декодирует. Заменяет обычный $_SERVER
sdf_FTS($_number,$_dicimen=2) _number - любое число
- _dicimen - количество знаков после запятойПреобразует число в строку формта 100000.$_dicimen. Отображения чисел с большой точностью. Существенно ускоряет написание кода.
sdf_goto($_link) _link - ссылка Прекращает работу модуля и переходит по указанной ссылке. Очень удобная функция и скоряющая написание кода
sd_timer_end() Возвращает время генерации страницы. Рекомендуется ставить в конец скрипта
sd_link($_text,$_link,$_right=false) _text - Название ссылки
_link - ссылка
_right - true - разерешноНа основании прав (_right) формирует ссылку. Очень интересная и полезная функци:
_text - (_right=true - разрешено переходить по ссылке)
_text - (_right=false - ссылка видна, но она не работает)sd_str_cut($_text,$_count) _text - текст
_count - кол-во символов для выводаФункция показывает отрезок из текста. Полезно при отображении новостей без гемороя. Например :
День сегодня прекрасный, а значит новости сегодня, будут хорошими. (до)
День сегодня прекрасный, а значит... (после)sdf_email_check($_link) _link - email адрес Проверка правильности адреса электронной почты. True - правильный адрес
sd_site_check($_link) _link - адрес сайта Проверка правильности написания ссылки на какой либо сайт. True - правильный сайт
sdf_email_show($_link) _link - email адрес Выводит email адрес с защитой от сканирования спамерами. Настоятельнос рекомендуется использовать данную функцию.
- В заголовке должны всегда быть кнопки назад - хранит в себе инфу о предыдущей странице, и помощь которая настраивается в настройках;
Учесть в настройках сайта:
все настройки хроняться в переменной $config['']
Переменная Значение По умолчанию Комментарий dubl_fio boolean false true - делать проверку на совпадение ФИО user_verify boolean false true - включить режим модерирования регистраций новых пользователей. Каждая регистрация будет требовать одобрения администратора Страница: Стандарты программирования для Web приложений
Раздел: Все индивидуальные страницы