Merge pull request #2353 from int2001/station1

Added Menu for maintenance
pull/2355/head
Peter Goodhall 2023-08-01 10:56:19 +01:00 zatwierdzone przez GitHub
commit 80bd0500ec
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
11 zmienionych plików z 165 dodań i 23 usunięć

Wyświetl plik

@ -10,7 +10,7 @@ class Backup extends CI_Controller {
public function index()
{
$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'); }
if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
$data['page_title'] = "Backup";
@ -23,7 +23,7 @@ class Backup extends CI_Controller {
public function adif($key = null){
if ($key == null) {
$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'); }
if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
}
$this->load->helper('file');
@ -58,7 +58,7 @@ class Backup extends CI_Controller {
public function notes($key = null) {
if ($key == null) {
$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'); }
if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
}
$this->load->helper('file');

Wyświetl plik

@ -0,0 +1,56 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Maintenance extends CI_Controller {
function __construct()
{
parent::__construct();
}
/* User Facing Links to Maintenance URLs */
public function index() {
$this->load->model('user_model');
if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
$this->load->model('Logbook_model');
$this->load->model('Stations');
$data['stations']=$this->Stations->all();
$data['page_title'] = "Maintenance";
$data['is_there_qsos_with_no_station_id'] = $this->Logbook_model->check_for_station_id();
if ($data['is_there_qsos_with_no_station_id']) {
$data['calls_wo_sid']=$this->Logbook_model->calls_without_station_id();
}
$this->load->view('interface_assets/header', $data);
$this->load->view('maintenance/main');
$this->load->view('interface_assets/footer');
}
public function reassign() {
$this->load->model('user_model');
if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
$this->load->model('Logbook_model');
$this->load->model('Stations');
$call = xss_clean(($this->input->post('call')));
$station_profile_id = xss_clean(($this->input->post('station_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) {
log_message("error",$call." to ".$station_profile_id);
$status=$this->Logbook_model->update_all_station_ids($station_profile_id,$call);
} else {
$status=false;
}
header('Content-Type: application/json');
echo json_encode(array('status' => $status));
return;
}
}
/* End of file Backup.php */

Wyświetl plik

@ -19,6 +19,9 @@ class Station extends CI_Controller {
{
$this->load->model('stations');
$this->load->model('Logbook_model');
$this->load->model('user_model');
$data['is_admin'] = ($this->user_model->authorize(99));
$data['stations'] = $this->stations->all_with_count();
$data['current_active'] = $this->stations->find_active();
@ -156,13 +159,6 @@ class Station extends CI_Controller {
redirect('station');
}
function assign_all() {
$this->load->model('Logbook_model');
$this->Logbook_model->update_all_station_ids();
redirect('station');
}
public function delete($id) {
$this->load->model('stations');
if ($this->stations->check_station_is_accessible($id)) {
@ -171,7 +167,7 @@ class Station extends CI_Controller {
redirect('station');
}
public function deletelog($id) {
public function deletelog($id) {
$this->load->model('stations');
if ($this->stations->check_station_is_accessible($id)) {
$this->stations->deletelog($id);

Wyświetl plik

@ -83,3 +83,5 @@ $lang['menu_hardware_interfaces'] = 'Hardware Interfaces';
$lang['menu_help'] = 'Help';
$lang['menu_forum'] = 'Forum';
$lang['menu_logout'] = 'Logout';
$lang['menu_maintenance']='Maintenance';

Wyświetl plik

@ -83,3 +83,5 @@ $lang['menu_hardware_interfaces'] = 'Hardware-Schnittstellen';
$lang['menu_help'] = 'Hilfe';
$lang['menu_forum'] = 'Forum';
$lang['menu_logout'] = 'Logout';
$lang['menu_maintenance'] = 'Wartung';

Wyświetl plik

@ -3850,6 +3850,12 @@ class Logbook_model extends CI_Model {
$this->db->trans_complete();
}
public function calls_without_station_id() {
$query=$this->db->query("select distinct COL_STATION_CALLSIGN from ".$this->config->item('table_name')." where station_id is null or station_id = ''");
$result = $query->result_array();
return $result;
}
public function check_for_station_id() {
$this->db->where('station_id =', NULL);
$query = $this->db->get($this->config->item('table_name'));
@ -3909,14 +3915,20 @@ class Logbook_model extends CI_Model {
}
}
public function update_all_station_ids() {
public function update_all_station_ids($station_id,$station_callsign) {
$data = array(
'station_id' => '1',
);
$data = array(
'station_id' => $station_id,
);
$this->db->where(array('station_id' => NULL));
return $this->db->update($this->config->item('table_name'), $data);
$this->db->where(array('station_id' => NULL));
$this->db->where('col_station_callsign', $station_callsign);
$this->db->update($this->config->item('table_name'), $data);
if ($this->db->affected_rows() > 0) {
return TRUE;
} else {
return FALSE;
}
}
public function parse_frequency($frequency)

Wyświetl plik

@ -77,6 +77,10 @@ function load_was_map() {
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/tempusdominus-bootstrap-4.min.js"></script>
<?php } ?>
<?php if ($this->uri->segment(1) == "maintenance" ) { ?>
<script src="<?php echo base_url() ;?>assets/js/sections/maintenance.js"></script>
<?php } ?>
<?php if ($this->uri->segment(1) == "adif" ) { ?>
<script src="<?php echo base_url() ;?>assets/js/sections/adif.js"></script>
<?php } ?>

Wyświetl plik

@ -182,6 +182,10 @@
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('maintenance');?>" title="maintenance"><i class="fas fa-tools"></i> <?php echo lang('menu_maintenance'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('debug');?>" title="Debug Information"><i class="fas fa-tools"></i> <?php echo lang('menu_debug_information'); ?></a>
</div>

Wyświetl plik

@ -0,0 +1,57 @@
<div class="container">
<br>
<?php if($this->session->flashdata('message')) { ?>
<!-- Display Message -->
<div class="alert-message error">
<p><?php echo $this->session->flashdata('message'); ?></p>
</div>
<?php } ?>
<h2><?php echo $page_title; ?></h2>
<div class="card">
<div class="card-header">
Maintenance
</div>
<?php if($is_there_qsos_with_no_station_id >= 1) { ?>
<div class="alert alert-danger" role="alert">
<span class="badge badge-pill badge-warning">Warning</span> The Database contains QSOs without a station-profile (location)<br/>
</div>
<div class="card-body">
<p class="card-text">Please reassign those QSOs to an existing station location:</p>
<div class="table-responsive">
<table id="station_locations_table" class="table table-sm table-striped">
<thead>
<tr>
<th scope="col">Call</th>
<th scope="col">Target Location</th>
<th scope="col">Reassign</th>
</tr>
</thead>
<tbody>
<?php
foreach ($calls_wo_sid as $call) {
echo '<tr><td>'.$call['COL_STATION_CALLSIGN'].'</td><td><select name="station_profile" id="station_profile">';
$options='';
foreach ($stations->result() as $station) {
$options.='<option value='.$station->station_id.'>'.$station->station_profile_name.' ('.$station->station_callsign.')</option>';
}
echo $options.'</select></td><td><button class="btn btn-warning" onClick="reassign(\''.$call['COL_STATION_CALLSIGN'].'\',$(\'#station_profile option:selected\').val());"><i class="fas fa-sync"></i>Reassign</a></button></td></tr>';
} ?>
</tbody></table>
</div>
</div>
<?php
} else { ?>
<div class="alert alert-secondary" role="alert">
<span class="badge badge-pill badge-success">Everything ok</span> Every QSO in your Database is assigned to a station-profile (location)
</div>
<?php } ?>
</div>
</div>

Wyświetl plik

@ -29,11 +29,11 @@
</div>
<?php } ?>
<?php if($is_there_qsos_with_no_station_id >= 1) { ?>
<?php if (($is_there_qsos_with_no_station_id >= 1) && ($is_admin)) { ?>
<div class="alert alert-danger" role="alert">
<span class="badge badge-pill badge-warning">Warning</span> Due to recent changes within Cloudlog you need to reassign QSOs to your station profiles.
Create a station profile, if you haven't already, then <a href="<?php echo site_url('station/assign_all/'); ?>" class="btn btn-danger" onclick="return confirm('Assign All QSOs to Default Station ID"><i class="fas fa-trash-alt"></i> press this button to assign all QSOs to the first Station Profile.</a>
</br>
Please reassign them at <a href="<?php echo site_url('maintenance/'); ?>" class="btn btn-warning"><i class="fas fa-sync"></i>Admin/Maintenance</a>
</div>
<?php } ?>
@ -68,9 +68,6 @@
<span class="badge badge-success">Active Station</span>
<?php } ?>
<?php if($is_there_qsos_with_no_station_id >= 1) { ?>
<a href="<?php echo site_url('station/reassign_profile/').$row->station_id; ?>" class="btn btn-outline-secondary btn-sm" onclick="return confirm('Are you sure you want to reassign QSOs to the <?php echo $row->station_profile_name; ?> profile?');">Reassign</a>
<?php } ?>
<br>
<span class="badge badge-info">ID: <?php echo $row->station_id;?></span>
<span class="badge badge-light"><?php echo $row->qso_total;?> QSOs</span>

Wyświetl plik

@ -0,0 +1,12 @@
function reassign(call,target_profile_id) {
$.ajax({
url: base_url + 'index.php/maintenance/reassign',
type: 'post',
data: {'call': call, 'station_id': target_profile_id},
success: function (resu) {
if (resu.status) {
location.reload();
}
}
});
}