<?php
 ##################################################################
 ## Development by CoMMoN web site author http://mirmastera.ru   ##
 ## fportal web site scripts http://fportal.tk                   ##
 ## All rights reserved authors                                  ##
 ##################################################################
if (!is_user()) {header('Location: /');} //Переадресация гостей
if (!is_admin(array(2,3,4))) {header('Location: /');} //Переадресация пользователей не являющихся админами
//Ещё одна проверка прав (на всякий случай)
if (is_admin(array(2,3,4))) {
switch(filtr($_GET['do'])){
#########################################################################################################################################
#########################################################################################################################################
default;
$mod_name = 'Админ-панель'; //Имя модуля
$act_name = 'Список модулей'; //Имя действия
require_once(ROOT.'/kernel/kernelhead.php'); //Подключение шапки
echo '<div class="title">'.$mod_name.' | '.$act_name.'</div>'; //Вывод заголовка

//Проверка наличия модулей
$sql = "SELECT COUNT(*) FROM ".PREFIX."modules";  
if ($STH = $mysql->query($sql)) { 
$STH = $STH -> fetch_row();
$STH = $STH[0]; 
if ($STH > 0) {

//Вывод модулей
$query_modules = $mysql -> query("SELECT * FROM `".PREFIX."modules` ORDER BY `id` DESC;");
$i = 0;
while ($data = $query_modules -> fetch_assoc()) {
++$i;//echo'<a class="touch" href="/?mod=dowload">Download <span style="float: right;">v6.01</span></a>';

if(is_file(ROOT.'/modules/'.filtr($data['name']).'/conf.ini')){
$conf_data = parse_ini_file(ROOT.'/modules/'.filtr($data['name']).'/conf.ini',true) or die('ERROR: modules file');
$data_name = $conf_data['name'];
}else{
$data_name = $data['name'];
}


echo '<div class="menu">'; 
if (is_file(ROOT.'/modules/'.filtr($data['name']).'/app.png')) {echo'<img src="/modules/'.filtr($data['name']).'/app.png" alt="app""/> ';}else{echo'<img src="/images/app/app.png" alt="app""/> ';}
echo '<a href="/?mod='.filtr($data['name']).'">'.filtr($data_name).'</a>';

echo'<span style="float: right;">';
if (is_file(ROOT.'/modules/'.filtr($data['name']).'/admin.php')) {echo '<a  href="/?mod='.filtr($data['name']).'&amp;act=admin"><font color="red">[A]</font></a>';}
else{echo ' ';}
if (is_file(ROOT.'/modules/'.filtr($data['name']).'/update.php')) {echo '<a  href="/?mod='.filtr($data['name']).'&amp;act=update">[upd]</a>';}
else{echo ' ';}

if (is_file(ROOT.'/modules/'.filtr($data['name']).'/unistall.php') || is_file(ROOT.'/modules/'.filtr($data['name']).'/dell_modul.php')) {
echo ' <a href="/?mod=system&amp;act=modules&amp;do=unistall&amp;modul='.filtr($data['name']).'">[Удалить]</a>';
}
echo'</span>';
echo'</div>';
}} //Конец вывода
else {echo '<div class="error">Модулей нет!</div>';} //Уведомление об отсутствии модулей
} //Конец проверки

//Навигация
echo '<a class="touch" href="/?mod=system">'.icons('return.png','16|16').' В админ-панель</a>';

require_once(ROOT.'/kernel/kernelfoot.php'); //Вывод ног
break;



case 'install':
$mod_name = 'Админ-панель'; //Имя модуля
$act_name = 'Установка модуля'; //Имя действия
require_once(ROOT.'/kernel/kernelhead.php'); //Подключение шапки
echo '<div class="title">'.$mod_name.' | '.$act_name.'</div>'; //Вывод заголовка


//echo $mime->getByName($_FILES["modul"]['tmp_name']).'<br/>'.$_FILES["modul"]['tmp_name'].'<br/>';


//Добавление
if (isset($_POST['submit'])) {//$_FILES["modul"]["type"] != 'application/zip' || $_FILES["modul"]["type"] != 'application/x-zip'
if ($mime->getByName($_FILES["modul"]['name']) != 'application/zip') {$error .= 'Модуль обязательно должен находиться именно в ZIP архиве!<br />';} //Уведомление при попытке загрузить запрещенный формат
else {
require_once(ROOT.'/kernel/pclzip.php'); //Импорт библиотеки Pclzip
$zip = new PclZip($_FILES['modul']['tmp_name']);
$modul_install = $zip->extract(PCLZIP_OPT_BY_NAME, 'name.txt', PCLZIP_OPT_EXTRACT_AS_STRING);
$name_ini = $modul_install[0]['content'];
$modul = parse_ini_string($name_ini);
$modul['name'] = trim($modul['name']);
$modul_name = $modul['name'];

if (empty($modul_name)) {$error .= 'Не указано имя модуля!<br />';} //Уведомление при отсутствии названия модуля
if(is_dir(ROOT.'/modules/'.$modul_name) or isset($error)) {$error .= 'Такой модуль уже установлен или файл name.txt некорректен!<br />';} //Прочие уведомления

else {
mkdir(ROOT.'/modules/'.$modul_name.'');
$zip->extract(PCLZIP_OPT_PATH, ROOT.'/modules/'.$modul_name.'');
$mysql -> query("INSERT INTO `".PREFIX."modules` (`name`) VALUES ('$modul_name');");
if (is_file(ROOT.'/modules/'.$modul_name.'/install.php'))
{
require_once(ROOT.'/modules/'.$modul_name.'/install.php');
@unlink(ROOT.'/modules/'.$modul_name.'/install.php');
}
@unlink(ROOT.'/modules/'.$modul_name.'/name.txt');
echo '<div class="success">Модуль '.filtr($modul_name).' установлен!</div>'; //Уведомление об успешной установке
}
}
if (isset($error)) {
echo '<div class="error"><b>Возникли ошибки:</b><br />'.$error.'</div>'; //Вывод ошибок
}
}

//Форма загрузки
echo'<div class="text_form_all">
<form action="/?mod=system&amp;act=modules&amp;do=install" method="post" enctype="multipart/form-data">
Загрузите <b>zip</b> архив модуля<br />
<input type="file" name="modul" class="text_form_file"/><br />
<input type="submit" name="submit" value="Установить" class="text_form_submit"/></form></div>';

//Навигация
echo '<a class="touch" href="/?mod=system">'.icons('return.png','16|16').' В админ-панель</a>';
require_once(ROOT.'/kernel/kernelfoot.php'); //Вывод ног

break;


case 'unistall':

$mod_name = 'Админ-панель'; //Имя модуля
$act_name = 'Удаление модуля'; //Имя действия
require_once(ROOT.'/kernel/kernelhead.php'); //Подключение шапки
echo '<div class="title">'.$mod_name.' | '.$act_name.'</div>'; //Вывод заголовка

if (isset($_POST['submit_no'])) {header('Location: /?mod=system&act=modules');} //Переадрисация при отказе от удаления

//Удаление
if (isset($_POST['submit_yes'])) {

//Подключение вспомогательного файла (если он есть)
if (is_file(ROOT.'/modules/'.filtr($_GET['modul']).'/dell_modul.php')) {
require_once(ROOT.'/modules/'.filtr($_GET['modul']).'/dell_modul.php');
}

//Удаление
$sqlm = $mysql->query("DELETE FROM `".PREFIX."modules` WHERE `name`='".filtr($_GET['modul'])."' LIMIT 1");

$mod_catalog = ROOT.'/modules/'.filtr($_GET['modul']).''; //Папка с модулем
removeDirectory($mod_catalog); //Удаление папки
echo '<div class="success">Модуль успешно удалён!</div>'; //Уведомление об успешном удалении

//Навигация
echo '<a cllass="touch" href="/?mod=system&amp;act=modules">'.icons('return.png','16|16').' Продолжить</a>';
require_once(ROOT.'/kernel/kernelfoot.php'); //Вывод ног
exit; //Завершение скрипта
} //Конец удаления

//Проверка наличия модуля
$sql = "SELECT COUNT(*) FROM ".PREFIX."modules WHERE name ='".filtr($_GET['modul'])."'";  
if ($STH = $mysql->query($sql)) {  
$STH = $STH -> fetch_row();
$STH = $STH[0]; 
if ($STH > 0) {
// Да/Нет
echo '<div class="menu">
Вы действительно хотите <b>удалить модуль '.filtr($_GET['modul']).'</b>?</div>
<div class="text_form_all">
<form action="/?mod=system&amp;act=modules&amp;do=unistall&amp;modul='.filtr($_GET['modul']).'" method="POST"> 
<input type="submit" name="submit_no" value="Отменить" class="text_form_submit"/><input type="submit" name="submit_yes" value="Удалить" class="text_form_submit"/> 
</form></div>'; 
}} //Конец проверки
else {echo '<div class="error">Такого модуля нет!</div>';} //Уведомление об отсутствии модуля

//Навигация
echo '<a class="touch" href="/?mod=system">'.icons('return.png','16|16').' В админ-панель</a>';
require_once(ROOT.'/kernel/kernelfoot.php'); //Вывод ног
break;
#########################################################################################################################################
#########################################################################################################################################
}
} //Конец проверки прав

?>
