Модули: Install

Начиная с версии Fapos 1.5, обладает упрощенным механизмом инсталяции модулей(добавлением). Рассмотрим на примерах...

Допустим, вы написали модуль "test". В каталоге с модулями он будет выглядеть так /modules/test/index.php. Дело в том, что этот модуль будет считаться не установленным, пока в конфиге не появятся его настройки. По сути это может быть вообще пустой массив. Хотя такой ключ как active обязательный. Именно он определяет включен ли модуль. Заметьте, не установлен, а именно включен, это разные вещи. Так вот, не установленные модули автоматически появляются в боковом меню админки и имеют только один пункт меню - install. Кликнув по этому пункту будет произведена установка модуля.

Что необходимо для установки модуля

Кроме описания настроек(файл info.php), есть ряд файлов, предназначенных именно для установки:
install_db.php - запросы к базе в виде массива
install_groups_rules.php - права групп для импорта в общий конфиг системы
install_settings.php - настройки для импорта
template_parts.php - какие части шаблона будут доступны в админке
install_modules_access.php - перечень доступных для модуля возможностей. Тут немного не понятно может быть. Пояню: по умолчанию для редактирования категорий и доп. полей открыты только news, stat, loads и foto. Но если вы хотите, что бы вашь модуль тоже имел доступ для редактирования этих сущностей, кроме создания необходимых таблиц, нужно так же добавить этот модуль в список разрешенных. Ниже я покажу пример как это сделать.


Подробнее и с примерами

install_db.php

    <?php
    $FpsInstallQueries 
= array();
    
$FpsInstallQueries[] = "CREATE TABLE `" $Register['DB']->getFullTableName('test') . "`";
    
$FpsInstallQueries[] = "CREATE TABLE `" $Register['DB']->getFullTableName('test') . "`";
    
$FpsInstallQueries[] = "CREATE TABLE `" $Register['DB']->getFullTableName('test') . "`";
    
?>
Тут, я думаю, все предельно ясно. Обычные запросы. По крайней мере, до версии 1.5 так и будет. А в более поздних версиях, возможно будет ОРМ и все станет еще проще.



install_groups_rules.php

    <?php
    $FpsInstallRules 
= array(
        
'view_list' => array('1''2'),
        
'add_material' => array('1''2'),
    );
    
?>

Предположим мы сделали такой файл с таким же содержанием как в примере. И допустим, что наш модуль называется mymod. Наш текущий файл с правами групп выглядит(утрированно) так:

    <?php
    $acl_rules 
= array (
      
'news' => 
      array (
        
// blabla...
        
),
    );
    
?>

Тогда, после инсталяции мы получим следующее:

    <?php
    $acl_rules 
= array (
        
'news' => array(
            
// blabla...
        
),
        
'mymod' => array(
            
'view_list' => array(
                
'1'// Теперь юзера со статусом 1 могут смотреть список материалов
                
'2'  // И со статусом 2 тоже
            
),
            
'add_material' => array(
                
'1'// Теперь юзера со статусом 1 могут добавлять материалы
                
'2'  // И со статусом 2 тоже
            
),
        ),
    );
    
?>




install_settings.php

    <?php
    $FpsInstallSettings 
= array(
        
'active' => 1,
        
'per_page' => 10,
        
'announce' => 1000,
    );
    
?>


Ну тут все почтитоже самое, что и в install_groups_rules.php, но есть парочка ньюансов. Во-первых, обязательная настройка active, равная единице(1). Это говорит о том, что модуль активен. Иначе он будет считаться отключенным. Ну переносится все в файл /sys/settings/config.php. Утрированный пример:
До

    <?php
    $set 
= array(
        
'news' => array(
            
'active' => 1,
            
'per_page' => 10,
            
'announce' => 1000,
        ),
        
// ... 
    
);
    
?>
После

    <?php
    $set 
= array(
        
'news' => array(
            
'active' => 1,
            
'per_page' => 10,
            
'announce' => 1000,
        ),
        
'mymod' => array(
            
'active' => 1,
            
'per_page' => 10,
            
'announce' => 1000,
        ),
    );
    
?>




template_parts.php

    <?php
    $allowedTemplateParts 
= array(
        
'addform',
        
'main',
        
'editform',
        
'viewmat',
        
'tablemat',
    );
    
?>


А это список файлов, доступных для редактирования через админку. Расширение указывать, как видите, не надо.



install_modules_access.php

    <?php
    $FpsInstallAllowModules 
= array(
    
'addFields' => array(
        
'yourmodule'
    ),
    
'addFieldsTitles' => array(
        
'yourmodule' => 'Мой модуль'
    ),
    
'categories' => array(
        
'yourmodule'
    ),
);
    
?>


Обратите внимание, настройка active в конфиге модуля отвечает за егог статус(активен/выключен). По этому, что бы ваш модуль работал, а не считался отключенным после инсталяции, обязательно делайте эту настройку равной единице("1").

Итоги:

Обратите внимание, имена файлов и переменных должны быть именно такими.