function restore($log_id, $files_dir = false) { zipfile::read(SYS_ROOT . 'var/trash/' . $log_id . '_conf.zip'); zipfile::extract(SYS_ROOT . 'conf/'); if ($files_dir) { zipfile::read(SYS_ROOT . 'var/trash/' . $log_id . '_files.zip'); zipfile::extract($files_dir); } dump::restore(SYS_ROOT . 'var/trash/' . $log_id . '_base.zip'); }
function installApp() { if ($_FILES['app']['name']) { if ($_FILES['app']['type'] != 'application/zip') { s::set('ERRORS', '<ul><li>Неверный формат архива приложения.</li></ul>'); } else { $arr = explode('.', $_FILES['app']['name']); if (count($arr) < 5) { s::set('ERRORS', '<ul><li>Неверный формат архива приложения.</li></ul>'); } else { define('INSTALL_APP', $arr[0]); define('INSTALL_APP_VERSION', $arr[1] . '.' . $arr[2] . '.' . $arr[3]); files::fullRemoveDir(SYS_ROOT . 'var/tmp/apps/'); $path = SYS_ROOT . 'var/tmp/apps/'; zipfile::read($_FILES['app']['tmp_name']); zipfile::extract($path); $install_file = $path . 'install.php'; if (!file_exists($install_file)) { s::set('ERRORS', '<ul><li>Не найден инсталляционый файл приложения.</li></ul>'); } else { include $install_file; // copy lang files $tmp_lang_dir = SYS_ROOT . 'var/tmp/apps/langs/'; $lang_dir = SYS_ROOT . 'langs/admin/'; if (file_exists($lang_dir)) { $array = files::getFiles($tmp_lang_dir); foreach ($array as $v) { if (!file_exists($lang_dir . $v)) { copy($tmp_lang_dir . $v, $lang_dir . $v); } else { $lang = ini::parse($tmp_lang_dir . $v); ini::parse($lang_dir . $v); ini::add($lang); ini::write(); } } } // copy app files $dir = SYS_ROOT . 'var/tmp/apps/' . INSTALL_APP . '/'; $new_dir = SYS_ROOT . 'apps/' . INSTALL_APP . '/'; files::copyDir($dir, $new_dir); // clear tmp files::fullRemoveDir(SYS_ROOT . 'var/tmp/apps/'); headers::app('manage'); } } } } }