mirror of
https://github.com/wavelog/wavelog.git
synced 2026-03-22 10:24:14 +00:00
Selfupdater 1st Version
This commit is contained in:
@@ -2,176 +2,184 @@
|
||||
|
||||
class Debug extends CI_Controller
|
||||
{
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
function __construct() {
|
||||
parent::__construct();
|
||||
|
||||
$this->load->model('user_model');
|
||||
if (!$this->user_model->authorize(2)) {
|
||||
$this->session->set_flashdata('notice', 'You\'re not allowed to do that!');
|
||||
redirect('dashboard');
|
||||
}
|
||||
$this->load->model('user_model');
|
||||
if (!$this->user_model->authorize(2)) {
|
||||
$this->session->set_flashdata('notice', 'You\'re not allowed to do that!');
|
||||
redirect('dashboard');
|
||||
}
|
||||
|
||||
$this->load->library('Permissions');
|
||||
}
|
||||
$this->load->library('Permissions');
|
||||
}
|
||||
|
||||
/* User Facing Links to Backup URLs */
|
||||
public function index()
|
||||
{
|
||||
$this->load->helper('file');
|
||||
/* User Facing Links to Backup URLs */
|
||||
public function index() {
|
||||
$this->load->helper('file');
|
||||
|
||||
$this->load->model('MigrationVersion');
|
||||
$this->load->model('Logbook_model');
|
||||
$this->load->model('Stations');
|
||||
$this->load->model('MigrationVersion');
|
||||
$this->load->model('Logbook_model');
|
||||
$this->load->model('Stations');
|
||||
|
||||
$footerData = [];
|
||||
$footerData['scripts'] = ['assets/js/sections/debug.js'];
|
||||
$footerData = [];
|
||||
$footerData['scripts'] = ['assets/js/sections/debug.js'];
|
||||
|
||||
$data['stations'] = $this->Stations->all();
|
||||
$data['stations'] = $this->Stations->all();
|
||||
|
||||
$data['qsos_with_no_station_id'] = $this->Logbook_model->check_for_station_id();
|
||||
if ($data['qsos_with_no_station_id']) {
|
||||
$data['calls_wo_sid'] = $this->Logbook_model->calls_without_station_id();
|
||||
}
|
||||
$data['qsos_with_no_station_id'] = $this->Logbook_model->check_for_station_id();
|
||||
if ($data['qsos_with_no_station_id']) {
|
||||
$data['calls_wo_sid'] = $this->Logbook_model->calls_without_station_id();
|
||||
}
|
||||
|
||||
$data['migration_version'] = $this->MigrationVersion->getMigrationVersion();
|
||||
$data['migration_version'] = $this->MigrationVersion->getMigrationVersion();
|
||||
|
||||
// Test writing to backup folder
|
||||
$backup_folder = $this->permissions->is_really_writable('backup');
|
||||
$data['backup_folder'] = $backup_folder;
|
||||
// Test writing to backup folder
|
||||
$backup_folder = $this->permissions->is_really_writable('backup');
|
||||
$data['backup_folder'] = $backup_folder;
|
||||
|
||||
// Test writing to updates folder
|
||||
$updates_folder = $this->permissions->is_really_writable('updates');
|
||||
$data['updates_folder'] = $updates_folder;
|
||||
// Test writing to updates folder
|
||||
$updates_folder = $this->permissions->is_really_writable('updates');
|
||||
$data['updates_folder'] = $updates_folder;
|
||||
|
||||
// Test writing to uploads folder
|
||||
$uploads_folder = $this->permissions->is_really_writable('uploads');
|
||||
$data['uploads_folder'] = $uploads_folder;
|
||||
// Test writing to uploads folder
|
||||
$uploads_folder = $this->permissions->is_really_writable('uploads');
|
||||
$data['uploads_folder'] = $uploads_folder;
|
||||
|
||||
// Check if userdata config is enabled
|
||||
$userdata_enabled = $this->config->item('userdata');
|
||||
$data['userdata_enabled'] = $userdata_enabled;
|
||||
// Check if userdata config is enabled
|
||||
$userdata_enabled = $this->config->item('userdata');
|
||||
$data['userdata_enabled'] = $userdata_enabled;
|
||||
|
||||
if (isset($userdata_enabled)) {
|
||||
// Test writing to userdata folder if option is enabled
|
||||
$userdata_folder = $this->permissions->is_really_writable('userdata');
|
||||
$data['userdata_folder'] = $userdata_folder;
|
||||
if (isset($userdata_enabled)) {
|
||||
// Test writing to userdata folder if option is enabled
|
||||
$userdata_folder = $this->permissions->is_really_writable('userdata');
|
||||
$data['userdata_folder'] = $userdata_folder;
|
||||
|
||||
// run the status check and return the array to the view
|
||||
$userdata_status = $this->check_userdata_status($userdata_folder);
|
||||
$data['userdata_status'] = $userdata_status;
|
||||
}
|
||||
// run the status check and return the array to the view
|
||||
$userdata_status = $this->check_userdata_status($userdata_folder);
|
||||
$data['userdata_status'] = $userdata_status;
|
||||
}
|
||||
|
||||
$data['page_title'] = "Debug";
|
||||
$data['page_title'] = "Debug";
|
||||
|
||||
$this->load->view('interface_assets/header', $data);
|
||||
$this->load->view('debug/index');
|
||||
$this->load->view('interface_assets/footer', $footerData);
|
||||
}
|
||||
$this->load->view('interface_assets/header', $data);
|
||||
$this->load->view('debug/index');
|
||||
$this->load->view('interface_assets/footer', $footerData);
|
||||
}
|
||||
|
||||
function check_userdata_status($userdata_folder)
|
||||
{
|
||||
$this->load->model('debug_model');
|
||||
|
||||
$status = array();
|
||||
function check_userdata_status($userdata_folder) {
|
||||
$this->load->model('debug_model');
|
||||
|
||||
// Check if the folder is writable
|
||||
if ($userdata_folder === true) {
|
||||
$status = array();
|
||||
|
||||
// Check if the qsl and eqsl folders are accessible and if there is any data the user could migrate
|
||||
$qsl_dir = $this->permissions->is_really_writable('assets/qslcard');
|
||||
$eqsl_dir = $this->permissions->is_really_writable('images/eqsl_card_images');
|
||||
// Check if the folder is writable
|
||||
if ($userdata_folder === true) {
|
||||
|
||||
$flag_file = $this->debug_model->check_migrated_flag();
|
||||
// Check if the qsl and eqsl folders are accessible and if there is any data the user could migrate
|
||||
$qsl_dir = $this->permissions->is_really_writable('assets/qslcard');
|
||||
$eqsl_dir = $this->permissions->is_really_writable('images/eqsl_card_images');
|
||||
|
||||
if ($qsl_dir && $eqsl_dir) {
|
||||
$flag_file = $this->debug_model->check_migrated_flag();
|
||||
|
||||
// Check for content of the qsl card folder other than *.html files
|
||||
$qsl_files = glob('assets/qslcard/*');
|
||||
$qsl_files_filtered = array_filter($qsl_files, function ($file) {
|
||||
return !is_dir($file) && pathinfo($file, PATHINFO_EXTENSION) !== 'html';
|
||||
});
|
||||
if ($qsl_dir && $eqsl_dir) {
|
||||
|
||||
// Check for content of the eqsl card folder other than *.html files
|
||||
$eqsl_files = glob('images/eqsl_card_images/*');
|
||||
$eqsl_files_filtered = array_filter($eqsl_files, function ($file) {
|
||||
return !is_dir($file) && pathinfo($file, PATHINFO_EXTENSION) !== 'html';
|
||||
});
|
||||
// Check for content of the qsl card folder other than *.html files
|
||||
$qsl_files = glob('assets/qslcard/*');
|
||||
$qsl_files_filtered = array_filter($qsl_files, function ($file) {
|
||||
return !is_dir($file) && pathinfo($file, PATHINFO_EXTENSION) !== 'html';
|
||||
});
|
||||
|
||||
// Set the status info
|
||||
if (!empty($qsl_files_filtered) || !empty($eqsl_files_filtered)) {
|
||||
if (!$flag_file) {
|
||||
$status['btn_class'] = '';
|
||||
$status['btn_text'] = 'Migrate data now';
|
||||
} else {
|
||||
$status['btn_class'] = '';
|
||||
$status['btn_text'] = 'Migration already done. Run again?';
|
||||
}
|
||||
} else {
|
||||
$status['btn_class'] = 'disabled';
|
||||
$status['btn_text'] = 'No data to migrate';
|
||||
}
|
||||
} else {
|
||||
$status['btn_class'] = 'disabled';
|
||||
$status['btn_text'] = 'No migration possible';
|
||||
}
|
||||
} else {
|
||||
// If the folder is not writable, we don't need to continue
|
||||
$status['btn_class'] = 'disabled';
|
||||
$status['btn_text'] = 'No migration possible';
|
||||
}
|
||||
// Check for content of the eqsl card folder other than *.html files
|
||||
$eqsl_files = glob('images/eqsl_card_images/*');
|
||||
$eqsl_files_filtered = array_filter($eqsl_files, function ($file) {
|
||||
return !is_dir($file) && pathinfo($file, PATHINFO_EXTENSION) !== 'html';
|
||||
});
|
||||
|
||||
return $status;
|
||||
}
|
||||
// Set the status info
|
||||
if (!empty($qsl_files_filtered) || !empty($eqsl_files_filtered)) {
|
||||
if (!$flag_file) {
|
||||
$status['btn_class'] = '';
|
||||
$status['btn_text'] = 'Migrate data now';
|
||||
} else {
|
||||
$status['btn_class'] = '';
|
||||
$status['btn_text'] = 'Migration already done. Run again?';
|
||||
}
|
||||
} else {
|
||||
$status['btn_class'] = 'disabled';
|
||||
$status['btn_text'] = 'No data to migrate';
|
||||
}
|
||||
} else {
|
||||
$status['btn_class'] = 'disabled';
|
||||
$status['btn_text'] = 'No migration possible';
|
||||
}
|
||||
} else {
|
||||
// If the folder is not writable, we don't need to continue
|
||||
$status['btn_class'] = 'disabled';
|
||||
$status['btn_text'] = 'No migration possible';
|
||||
}
|
||||
|
||||
public function reassign()
|
||||
{
|
||||
$this->load->model('Logbook_model');
|
||||
$this->load->model('Stations');
|
||||
return $status;
|
||||
}
|
||||
|
||||
$call = xss_clean(($this->input->post('call')));
|
||||
$qsoids = xss_clean(($this->input->post('qsoids')));
|
||||
$station_profile_id = xss_clean(($this->input->post('station_id')));
|
||||
public function reassign() {
|
||||
$this->load->model('Logbook_model');
|
||||
$this->load->model('Stations');
|
||||
|
||||
log_message('debug', 'station_profile_id:', $station_profile_id);
|
||||
// Check if target-station-id exists
|
||||
$allowed = false;
|
||||
$status = false;
|
||||
$stations = $this->Stations->all();
|
||||
foreach ($stations->result() as $station) {
|
||||
if ($station->station_id == $station_profile_id) {
|
||||
$allowed = true;
|
||||
}
|
||||
}
|
||||
if ($allowed) {
|
||||
$status = $this->Logbook_model->update_station_ids($station_profile_id, $call, $qsoids);
|
||||
} else {
|
||||
$status = false;
|
||||
}
|
||||
$call = xss_clean(($this->input->post('call')));
|
||||
$qsoids = xss_clean(($this->input->post('qsoids')));
|
||||
$station_profile_id = xss_clean(($this->input->post('station_id')));
|
||||
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array('status' => $status));
|
||||
return;
|
||||
}
|
||||
log_message('debug', 'station_profile_id:', $station_profile_id);
|
||||
// Check if target-station-id exists
|
||||
$allowed = false;
|
||||
$status = false;
|
||||
$stations = $this->Stations->all();
|
||||
foreach ($stations->result() as $station) {
|
||||
if ($station->station_id == $station_profile_id) {
|
||||
$allowed = true;
|
||||
}
|
||||
}
|
||||
if ($allowed) {
|
||||
$status = $this->Logbook_model->update_station_ids($station_profile_id, $call, $qsoids);
|
||||
} else {
|
||||
$status = false;
|
||||
}
|
||||
|
||||
public function migrate_userdata()
|
||||
{
|
||||
// Check if users logged in
|
||||
$this->load->model('user_model');
|
||||
if ($this->user_model->validate_session() == 0) {
|
||||
// user is not logged in
|
||||
redirect('user/login');
|
||||
} else {
|
||||
$this->load->model('debug_model');
|
||||
$migrate = $this->debug_model->migrate_userdata();
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array('status' => $status));
|
||||
return;
|
||||
}
|
||||
|
||||
if ($migrate == true) {
|
||||
$this->session->set_flashdata('success', 'File Migration was successfull, but please check also manually. If everything seems right you can delete the folders "assets/qslcard" and "images/eqsl_card_images".');
|
||||
redirect('debug');
|
||||
} else {
|
||||
$this->session->set_flashdata('error', 'File Migration failed. Please check the Error Log.');
|
||||
redirect('debug');
|
||||
}
|
||||
}
|
||||
}
|
||||
public function selfupdate() {
|
||||
if (file_exists('.git')) {
|
||||
try {
|
||||
$st=exec('git stash push --include-untracked');
|
||||
$st=exec('git pull --rebase');
|
||||
$st=exec('git stash pop');
|
||||
} catch (\Throwable $th) {
|
||||
}
|
||||
}
|
||||
redirect('debug');
|
||||
}
|
||||
|
||||
|
||||
public function migrate_userdata() {
|
||||
// Check if users logged in
|
||||
$this->load->model('user_model');
|
||||
if ($this->user_model->validate_session() == 0) {
|
||||
// user is not logged in
|
||||
redirect('user/login');
|
||||
} else {
|
||||
$this->load->model('debug_model');
|
||||
$migrate = $this->debug_model->migrate_userdata();
|
||||
|
||||
if ($migrate == true) {
|
||||
$this->session->set_flashdata('success', 'File Migration was successfull, but please check also manually. If everything seems right you can delete the folders "assets/qslcard" and "images/eqsl_card_images".');
|
||||
redirect('debug');
|
||||
} else {
|
||||
$this->session->set_flashdata('error', 'File Migration failed. Please check the Error Log.');
|
||||
redirect('debug');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user