This is an old revision of the document!
Struct of PunBB development extensions
General information
Система расширений позволяет создавать шибкую систему дополнений, позволяющие создавать дополнения без внесения изменений в ядро PunBB. Управляя системой расширений вы можете определять уровень функциональности, дополняя сайт нужными для вас функциями.
Names of variable, functions
Любые обозначения в коде PunBB имеют свое значение. Систематизация обозначений повышает уровень читаемости и наглядности кода. Принципы обозначения:
- Любые константы форума пишутся заглавными буквами
- При указании переменных, содержащих несколько имен, используется в качастве разделителя символ “_”
$str_name = 'My name is Jake';
- При указании имен переменных, первым словом идет указание какой части форума она принадлежит
echo '<pre>'; print_r($forum_config); echo '</pre>';
- Use common prefixes:
- num for entities that represent a count
- cur for entities that represent the current element when iterating through any type of collection (database result set, array etc)
- При указании имен переменных, касающихся конкертной страницы, используются сокращения. Например, название страницы viewtopic - vt.
Code styles
Уровень читаемости и наглядности кода также придает определенный стиль кодирования, которого придерживаются все участники разработки на протяжении всего кода. И желательно придерживаться того же стиля кодирования, что и на форуме.
- All line breaks should be LF only.
- Каждый функциональный блок, который на один уровень глубже, должен отделяться Табуляцией:
for (int $iter = 0; $iter < 10; $iter++) { if ($iter < 5) { . . . } }
- Математические знаки с двух сторон выделяются пробелами:
$c = $a + $b;
- При перечислении параметров после символов ”;”, ”,” ставится пробел, но до символа - нет:
$arr = array('green', 'blue', 'red', 'yellow');
- Каждый функциональный блок отделяется дополнительным символом переноса строки
PHP specification
SQL specification
The manifest
Manifest in general
Blocks of manifest
<extension>
<id>
<title>
<version>
<description>
<author>
<minversion>
<maxtestedon>
<note>
Install
Uninstall
Type
<dependencies>
<dependency>
<install> and <uninstall>
<hooks>
Parameter "priority" in the tag <hook>
Idea of work extensions
Install extensions
Uninstall extensions
Upgrade extensions (EXT_CUR_VERSION)
Work of extensions on PunBB (hooks)
Including files
Language files
Javascript and CSS
PHP
$ext_info
Steps of development
- Create the idea of extension
- Create the wiki article for the extension and write the general idea and the specification there.
- The page url must be http://punbb.informer.com/wiki/punbb13:<extension_id>, e.g. http://punbb.informer.com/wiki/punbb13:pun_pm.
- You may also start the discussion in Forums to ask users to add their feature requests to the specification.
- Add the ticket to the Trac (or just start a text file, if you have no Trac). List the main tasks to complete the extension.
- //To be invented:// Create the automatic test (e.g. using pun_admin_simpletest) for all the features in your task-list.
- Code them all! Follow your task-list and strike out done.
- Commit your changes to the SVN separately: one feature or one bug fix is one commit. Do not commit multiple changes simultaneously.
- BTW: Use SVN or other VCS. (I personally prefer Bazaar.)
- Add the documentation to the wiki article.
- Extension usage.
- Extension customization and integration.
- Publish extension in the extension repository (as soon as it passed all the automatic tests).
- Third-party developers may propose their extensions to be reviewed and published in the repository.
- Release the extension in Forums.