<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* MaxSite CMS
* (c) https://max-3000.com/
*/
if ($post = mso_check_post(array('f_session_id', 'f_module', 'f_newmodule'))) {
mso_checkreferer();
$module = $post['f_module'];
$newModule = $post['f_newmodule'];
$errors = [];
$ok = '';
if ($newModule !== '') {
// указан новый модуль - вначале проверки
// новый модуль должен состоять из группа/каталог
$newModuleCheck = explode('/', $newModule);
if (count($newModuleCheck) != 2) $errors[] = t('Имя нового модуля должно быть в формате «группа/каталог»');
// только англ. символы, цифры, / _ -
$newModuleCheck = preg_replace('/[^0-9a-zA-Z\-\_\/]/', '', $newModule);
if ($newModuleCheck !== $newModule) $errors[] = t('Недопустимые символы в имени модуля');
if (!$errors and file_exists(getinfo('template_dir') . 'modules/' . $newModule . '/index.php'))
$errors[] = t('Модуль с таким именем уже существует');
} else {
$newModule = $module;
}
// проверки, которых в теории не должно быть
if (!$errors and !$module) $errors[] = t('Не указан модуль для копирования');
// нет исходного модуля
if (!$errors and !file_exists(getinfo('template_dir') . 'store/' . $module . '/index.php'))
$errors[] = t('Исходный модуль недоступен');
if (!$errors) {
// работаем
$dirStore = getinfo('template_dir') . 'store/' . $module;
$dirModules = getinfo('template_dir') . 'modules/' . $newModule;
recurse_copy($dirStore, $dirModules);
if (file_exists($dirModules)) {
$ok = '<br>Модуль создан. Для его использования в добавьте строчку <br><b>@module ' . $newModule . '</b>';
// в index.php заменим имя модуля
if ($module != $newModule) {
$textIn = file_get_contents($dirModules . '/index.php');
$textOut = str_replace($module, $newModule, $textIn);
if ($textOut != $textIn)
file_put_contents($dirModules . '/index.php', $textOut);
}
} else {
$errors[] = t('Ошибка копирования');
}
}
if ($errors)
echo '<div class="error">' . implode('<br>', $errors) . '</div>';
else
echo '<div class="update">' . t('Готово!') . $ok . '</div>';
}
# end of file