Browse Source

Fixes

master
MadD3n 4 years ago
parent
commit
2c559eebef
  1. 141
      class/class.modules.php

141
class/class.modules.php

@ -17,7 +17,7 @@
private static $instance = null; private static $instance = null;
function __construct () public function __construct ()
{ {
$this->_modules = $this->getModules(); $this->_modules = $this->getModules();
} }
@ -26,7 +26,9 @@
public static function init () public static function init ()
{ {
if (is_null(self::$instance)) if (is_null(self::$instance))
{
self::$instance = new AVE_Module; self::$instance = new AVE_Module;
}
return self::$instance; return self::$instance;
} }
@ -35,7 +37,7 @@
/** /**
* Метод, который обрабатывает все module.php и записывает как свойство класса списки модулей * Метод, который обрабатывает все module.php и записывает как свойство класса списки модулей
*/ */
function getModules () public function getModules ()
{ {
$modules = []; $modules = [];
@ -49,10 +51,14 @@
while (false !== ($entry = $d->read())) while (false !== ($entry = $d->read()))
{ {
if (substr($entry, 0, 1) == '.') if (substr($entry, 0, 1) == '.')
{
continue; continue;
}
if (! is_dir(BASE_DIR . '/modules/' . $entry)) if (! is_dir(BASE_DIR . '/modules/' . $entry))
{
continue; continue;
}
$AVE_Template = new AVE_Template(BASE_DIR . '/admin/templates'); $AVE_Template = new AVE_Template(BASE_DIR . '/admin/templates');
@ -61,18 +67,24 @@
// Языковой файл // Языковой файл
$lang_file = BASE_DIR . '/modules/'.$entry.'/lang/' . $_SESSION['user_language'] . '.txt'; $lang_file = BASE_DIR . '/modules/'.$entry.'/lang/' . $_SESSION['user_language'] . '.txt';
// Отдаем смарти переменные // Отдаем SMARTY переменные
if (file_exists($lang_file)) if (file_exists($lang_file))
{
$AVE_Template->config_load($lang_file, 'name'); $AVE_Template->config_load($lang_file, 'name');
}
else else
$_no_lang_file = true; {
$_no_lang_file = true;
}
$module_dir = $d->path . '/' . $entry; $module_dir = $d->path . '/' . $entry;
if (! is_dir($module_dir)) if (! is_dir($module_dir))
{
continue; continue;
}
$module = array (); $module = [];
// Если не удалось подключить основной файл модуля module.php - Фиксируем ошибку // Если не удалось подключить основной файл модуля module.php - Фиксируем ошибку
if (! (is_file($module_dir . '/info.php') && @include_once($module_dir . '/info.php'))) if (! (is_file($module_dir . '/info.php') && @include_once($module_dir . '/info.php')))
@ -125,17 +137,15 @@
// Закрываем папку // Закрываем папку
$d->Close(); $d->Close();
$modules = msort($modules,'ModuleName');
return $modules; return $modules;
} }
/** /**
* Метод, преданзначеный для выода модулей * Метод, предназначенный для вывода модулей
* *
*/ */
function moduleList () public function moduleList ()
{ {
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
@ -154,7 +164,9 @@
$query = $AVE_DB->Query($sql); $query = $AVE_DB->Query($sql);
while ($row = $query->FetchRow()) while ($row = $query->FetchRow())
{
$assign['all_templates'][$row->Id] = htmlspecialchars($row->template_title, ENT_QUOTES); $assign['all_templates'][$row->Id] = htmlspecialchars($row->template_title, ENT_QUOTES);
}
// Заголовок: Автор модуля // Заголовок: Автор модуля
$author_title = $AVE_Template->get_config_vars('MODULES_AUTHOR'); $author_title = $AVE_Template->get_config_vars('MODULES_AUTHOR');
@ -169,10 +181,14 @@
: "<br /><br /><strong>$author_title</strong><br />" . $module['ModuleAutor'] . "<br />") . '<br /><em>' . $module['ModuleCopyright'] . '</em>'; : "<br /><br /><strong>$author_title</strong><br />" . $module['ModuleAutor'] . "<br />") . '<br /><em>' . $module['ModuleCopyright'] . '</em>';
// установленные модули // установленные модули
if ($module['ModuleStatus'] !== false) if ($module['ModuleStatus'] !== false)
{
$installed_modules[$module['ModuleSysName']] = $module; $installed_modules[$module['ModuleSysName']] = $module;
}
// неустановленные модули // неустановленные модули
else else
$not_installed_modules[$module['ModuleSysName']] = $module; {
$not_installed_modules[$module['ModuleSysName']] = $module;
}
} }
! empty($installed_modules) ! empty($installed_modules)
@ -183,8 +199,8 @@
? ksort($not_installed_modules) ? ksort($not_installed_modules)
: $not_installed_modules = ''; : $not_installed_modules = '';
$assign['installed_modules'] = $installed_modules; $assign['installed_modules'] = msort((array)$installed_modules,'ModuleName');
$assign['not_installed_modules'] = $not_installed_modules; $assign['not_installed_modules'] = msort((array)$not_installed_modules,'ModuleName');
// Массив с ошибками // Массив с ошибками
if (! empty($modules['errors'])) if (! empty($modules['errors']))
@ -210,7 +226,7 @@
* если не указано возвращает модули без учета статуса * если не указано возвращает модули без учета статуса
* @return array * @return array
*/ */
function moduleListGet($status = null) public function moduleListGet($status = null)
{ {
global $AVE_DB; global $AVE_DB;
@ -221,7 +237,9 @@
foreach ($this->_modules AS $k => $v) foreach ($this->_modules AS $k => $v)
{ {
if ($status && $v['ModuleStatus'] != $status) if ($status && $v['ModuleStatus'] != $status)
{
continue; continue;
}
$modules[$k] = $v; $modules[$k] = $v;
} }
@ -249,7 +267,9 @@
$query = $AVE_DB->Query($sql, -1, 'modules', true, '.modules'); $query = $AVE_DB->Query($sql, -1, 'modules', true, '.modules');
while ($row = $query->FetchRow()) while ($row = $query->FetchRow())
{
$modules[$row->ModuleSysName] = $row; $modules[$row->ModuleSysName] = $row;
}
} }
// Возвращаем список модулей // Возвращаем список модулей
@ -261,7 +281,7 @@
* Метод, предназначенный для обновления в БД информации о шаблонах модулей * Метод, предназначенный для обновления в БД информации о шаблонах модулей
* *
*/ */
function moduleOptionsSave () public function moduleOptionsSave ()
{ {
global $AVE_DB; global $AVE_DB;
@ -281,36 +301,39 @@
$this->clearModulesCache (); $this->clearModulesCache ();
// Выполянем обновление страницы со списком модулей // Выполняем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION); header('Location:index.php?do=modules&cp=' . SESSION);
exit; exit;
} }
/** /**
* Метод, предназанченный для установки или переустановки модуля * Метод, предназначенный для установки или переустановки модуля
* *
*/ */
function moduleInstall () public function moduleInstall ()
{ {
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
// Получаем данные модуля // Получаем данные модуля
$modules = $this->_modules; $modules = $this->_modules;
// Выбираем нужный нам модуль
$module = $modules[MODULE_PATH]; $module = $modules[MODULE_PATH];
// Удаляем информацию о модуле в таблице module // Удаляем информацию о модуле в таблице module
$AVE_DB->Query(" $sql = "
DELETE DELETE
FROM FROM
" . PREFIX . "_module " . PREFIX . "_module
WHERE WHERE
ModuleSysName = '" . MODULE_PATH . "' ModuleSysName = '" . MODULE_PATH . "'
"); ";
$AVE_DB->Query($sql);
// Определяем, имеет ли модуль возможность настройки в Панели управления // Определяем, имеет ли модуль возможность настройки в Панели управления
$module['ModuleAdminEdit'] = (!empty($module['ModuleAdminEdit'])) $module['ModuleAdminEdit'] = (! empty($module['ModuleAdminEdit']))
? $module['ModuleAdminEdit'] ? $module['ModuleAdminEdit']
: 0; : 0;
@ -320,7 +343,7 @@
: 0; : 0;
// Добавляем информацию о модуле в таблицу module // Добавляем информацию о модуле в таблицу module
$AVE_DB->Query(" $sql = "
INSERT INTO INSERT INTO
" . PREFIX . "_module " . PREFIX . "_module
SET SET
@ -334,31 +357,33 @@
ModuleVersion = '" . $module['ModuleVersion'] . "', ModuleVersion = '" . $module['ModuleVersion'] . "',
ModuleTemplate = '" . $module['ModuleTemplate'] . "', ModuleTemplate = '" . $module['ModuleTemplate'] . "',
ModuleAdminEdit = '" . $module['ModuleAdminEdit'] . "' ModuleAdminEdit = '" . $module['ModuleAdminEdit'] . "'
"); ";
$AVE_DB->Query($sql);
// Подключаем файл с запросами к БД для данного модуля // Подключаем файл с запросами к БД для данного модуля
$module_sql_deinstall = array(); $module_sql_deinstall = [];
$module_sql_install = array(); $module_sql_install = [];
$sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php'; $sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php';
if (is_file($sql_file) && @include($sql_file)) if (is_file($sql_file) && @include($sql_file))
{ {
// Выполняем запросы удаления таблиц модуля // Выполняем запросы удаления таблиц модуля
// из массива $module_sql_deinstall файла sql.php // из массива $module_sql_deinstall файла sql.php
foreach ($module_sql_deinstall as $sql) foreach ($module_sql_deinstall AS $sql)
{ {
$AVE_DB->Query(str_replace('%%PRFX%%', PREFIX, $sql)); $AVE_DB->Query(str_replace('%%PRFX%%', PREFIX, $sql));
} }
// Выполняем запросы создания таблиц и данных модуля // Выполняем запросы создания таблиц и данных модуля
// из массива $module_sql_install файла sql.php // из массива $module_sql_install файла sql.php
foreach ($module_sql_install as $sql) foreach ($module_sql_install AS $sql)
{ {
$AVE_DB->Query(str_replace('%%PRFX%%', PREFIX, $sql)); $AVE_DB->Query(str_replace('%%PRFX%%', PREFIX, $sql));
} }
} }
// Сохраняем системное сообщение в журнал // Сохраняем системное сообщение в журнал
($_REQUEST['action'] == "reinstall") ($_REQUEST['action'] == 'reinstall')
? reportLog($AVE_Template->get_config_vars('MODULES_ACTION_REINSTALL') . ' (' . $module['ModuleName'] . ')') ? reportLog($AVE_Template->get_config_vars('MODULES_ACTION_REINSTALL') . ' (' . $module['ModuleName'] . ')')
: reportLog($AVE_Template->get_config_vars('MODULES_ACTION_INSTALL') . ' (' . $module['ModuleName'] . ')'); : reportLog($AVE_Template->get_config_vars('MODULES_ACTION_INSTALL') . ' (' . $module['ModuleName'] . ')');
@ -374,7 +399,7 @@
* Метод, предназначенный для обновления модуля при увеличении номера версии модуля * Метод, предназначенный для обновления модуля при увеличении номера версии модуля
* *
*/ */
function moduleUpdate () public function moduleUpdate ()
{ {
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
@ -394,8 +419,10 @@
// Выполняем запросы обновления модуля // Выполняем запросы обновления модуля
// из массива $module_sql_update файла sql.php // из массива $module_sql_update файла sql.php
foreach ($module_sql_update as $sql) foreach ($module_sql_update AS $sql)
{
$AVE_DB->Query(str_replace('%%PRFX%%', PREFIX, $sql)); $AVE_DB->Query(str_replace('%%PRFX%%', PREFIX, $sql));
}
} }
// Обновляем модуль, если в нем не применяется (отсутствует) файл sql.php // Обновляем модуль, если в нем не применяется (отсутствует) файл sql.php
elseif (file_exists($mod_file) && file_exists($sql_file) === false) elseif (file_exists($mod_file) && file_exists($sql_file) === false)
@ -430,22 +457,22 @@
$this->clearModulesCache(); $this->clearModulesCache();
// Выполянем обновление страницы со списком модулей // Выполняем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION); header('Location:index.php?do=modules&cp=' . SESSION);
exit; exit;
} }
/** /**
* Метод, предназанченный для удаление модуля * Метод, предназначенный для удаление модуля
* *
*/ */
function moduleDelete () public function moduleDelete ()
{ {
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
// Подключаем файл с запросами к БД для данного модуля // Подключаем файл с запросами к БД для данного модуля
$module_sql_deinstall = array(); $module_sql_deinstall = [];
$sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php'; $sql_file = BASE_DIR . '/modules/' . MODULE_PATH . '/sql.php';
@ -460,20 +487,22 @@
} }
// Удаляем информацию о модуле в таблице module // Удаляем информацию о модуле в таблице module
$AVE_DB->Query(" $sql = "
DELETE DELETE
FROM FROM
" . PREFIX . "_module " . PREFIX . "_module
WHERE WHERE
ModuleSysName = '" . MODULE_PATH . "' ModuleSysName = '" . MODULE_PATH . "'
"); ";
$AVE_DB->Query($sql);
$this->clearModulesCache(); $this->clearModulesCache();
// Сохраняем системное сообщение в журнал // Сохраняем системное сообщение в журнал
reportLog ($AVE_Template->get_config_vars('MODULES_ACTION_DELETE') .' (' . MODULE_PATH . ')'); reportLog ($AVE_Template->get_config_vars('MODULES_ACTION_DELETE') .' (' . MODULE_PATH . ')');
// Выполянем обновление страницы со списком модулей // Выполняем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION); header('Location:index.php?do=modules&cp=' . SESSION);
exit; exit;
} }
@ -483,11 +512,11 @@
* Метод, предназначенный для отключения/включение модуля в Панели управления * Метод, предназначенный для отключения/включение модуля в Панели управления
* *
*/ */
function moduleStatusChange () public function moduleStatusChange ()
{ {
global $AVE_DB, $AVE_Template; global $AVE_DB, $AVE_Template;
$status = $AVE_DB->Query(" $sql = "
SELECT SELECT
ModuleName, ModuleName,
ModuleStatus ModuleStatus
@ -495,26 +524,30 @@
" . PREFIX . "_module " . PREFIX . "_module
WHERE WHERE
ModuleSysName = '" . MODULE_PATH . "' ModuleSysName = '" . MODULE_PATH . "'
")->FetchRow(); ";
$status = $AVE_DB->Query($sql)->FetchRow();
$ModuleStatus = ($status->ModuleStatus == "0" || $status->ModuleStatus == NULL) $ModuleStatus = ($status->ModuleStatus == '0' || $status->ModuleStatus == NULL)
? "1" ? '1'
: "0"; : '0';
// Выполняем запрос к БД на смену статуса модуля // Выполняем запрос к БД на смену статуса модуля
$AVE_DB->Query(" $sql = "
UPDATE UPDATE
" . PREFIX . "_module " . PREFIX . "_module
SET SET
ModuleStatus = '".$ModuleStatus."' ModuleStatus = '" . $ModuleStatus . "'
WHERE WHERE
ModuleSysName = '" . MODULE_PATH . "' ModuleSysName = '" . MODULE_PATH . "'
"); ";
$AVE_DB->Query($sql);
$this->clearModulesCache (); $this->clearModulesCache ();
// Сохраняем системное сообщение в журнал // Сохраняем системное сообщение в журнал
reportLog ((($ModuleStatus == "0") reportLog ((($ModuleStatus == '0')
? $AVE_Template->get_config_vars('MODULES_ACTION_OFFLINE') ? $AVE_Template->get_config_vars('MODULES_ACTION_OFFLINE')
: $AVE_Template->get_config_vars('MODULES_ACTION_ONLINE')) . ' (' . $status->ModuleName . ')'); : $AVE_Template->get_config_vars('MODULES_ACTION_ONLINE')) . ' (' . $status->ModuleName . ')');
@ -524,9 +557,9 @@
} }
function moduleRemove ($dir) public function moduleRemove ($dir)
{ {
global $AVE_DB, $AVE_Template; global $AVE_Template;
$directory = BASE_DIR . '/modules/' . $dir; $directory = BASE_DIR . '/modules/' . $dir;
@ -534,10 +567,14 @@
foreach ($files as $file) foreach ($files as $file)
{ {
if(substr($file, -1) == '/') if (substr($file, -1) == '/')
{
$this->moduleRemove($file); $this->moduleRemove($file);
}
else else
unlink($file); {
unlink($file);
}
} }
rrmdir ($directory); rrmdir ($directory);
@ -547,7 +584,7 @@
// Сохраняем системное сообщение в журнал // Сохраняем системное сообщение в журнал
reportLog ($AVE_Template->get_config_vars('MODULES_ACTION_REMOVE') . ' (' . $dir . ')'); reportLog ($AVE_Template->get_config_vars('MODULES_ACTION_REMOVE') . ' (' . $dir . ')');
// Выполянем обновление страницы со списком модулей // Выполняем обновление страницы со списком модулей
header('Location:index.php?do=modules&cp=' . SESSION); header('Location:index.php?do=modules&cp=' . SESSION);
exit; exit;
} }
@ -557,7 +594,7 @@
* Функция очищает кеш системных настроек * Функция очищает кеш системных настроек
* *
*/ */
function clearModulesCache() public function clearModulesCache()
{ {
$cache_dir = BASE_DIR . '/tmp/cache/sql/modules/'; $cache_dir = BASE_DIR . '/tmp/cache/sql/modules/';

Loading…
Cancel
Save