<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
 * MaxSite CMS
 * (c) https://max-3000.com/
 */

// Диспетчер опций шаблона
// Сами опции вынесены в ini-файлы каталога options шаблона
// Поддерживаются custom/my_options.ini и custom/my_options.php
// В php-файлах опций доступна $options, к которой и добавляются свои опции

echo '<h1>' . t('Настройка шаблона') . ' «' . getinfo('template_name') . '»</h1>';

// функции для работы с ini-файлом
require_once getinfo('common_dir') . 'inifile.php';

// проверка на обновление POST
if (mso_check_post_ini()) echo '<div class="update">' . t('Обновлено!') . '</div>';

$options = [];

// если переменная = true, то подгружаем дефолтные ini-опции из shared/options/default/ 
if (mso_get_val('get_options_default', true)) {
    // получим список всех файлов из options
    $files = mso_get_path_files(getinfo('shared_dir') . 'options/default/', getinfo('shared_dir') . 'options/default/', true, ['ini']);

    foreach ($files as $file) {
        $add = mso_get_ini_file($file);
        $options = array_merge($options, $add);
    }
}

// получим список всех ini-файлов из options шаблона
$files = mso_get_path_files(getinfo('template_dir') . 'options/', getinfo('template_dir') . 'options/', true, ['ini']);

foreach ($files as $file) {
    $add = mso_get_ini_file($file);
    $options = array_merge($options, $add);
}

if (file_exists(getinfo('template_dir') . 'custom/my_options.php')) {
    require getinfo('template_dir') . 'custom/my_options.php';
}

if (file_exists(getinfo('template_dir') . 'custom/my_options.ini')) {
    $add = mso_get_ini_file(getinfo('template_dir') . 'custom/my_options.ini'); // и свой
    $options = array_merge($options, $add);
}

// ini-файлы могут быть в custom/options/
$opt_files = glob(getinfo('template_dir') . 'custom/options/*.ini');

if ($opt_files) {
    natsort($opt_files);

    foreach ($opt_files as $f) {
        $add = mso_get_ini_file($f);
        $options = array_merge($options, $add);
    }
}

// подключим все опции компонентов из components
// в них ini-файлы, а также php-файлы, обслуживающие ini (для PHP_START PHP_END)
// поэтому подключаем все php-файлы, после все ini-файлы
// подключаем только те опции и ini компонентов, которые реально существуют

// каждый компонент в своем каталоге
$all_component =  mso_get_dirs(getinfo('template_dir') . 'components/', [], false, false);

// проверяем опции компонентов (options.php)
foreach ($all_component as $dir) {
    $file = getinfo('template_dir') . 'components/' . $dir . '/options.php';

    // php-файл опций. в нём доступна $options, к которой добавляются свои опции
    if (file_exists($file)) require $file;
}

// проверяем options.ini
foreach ($all_component as $dir) {
    $file = getinfo('template_dir') . 'components/' . $dir . '/options.ini';

    if (file_exists($file)) {
        $add = mso_get_ini_file($file);

        // чтобы позволить использовать в компонентах одинаковые названия опций,
        // добавим к названию имя компонета в скобках
        $a1 = [];

        foreach ($add as $key => $val) {
            $a1[$key . ' (' . $dir . ')'] = $val;
        }

        $options = array_merge($options, $a1);
    }
}

// вывод всех ini-опций
echo mso_view_ini($options);

# end of file
