mirror of
https://github.com/magicbug/Cloudlog
synced 2024-11-23 01:59:14 +00:00
164 lines
6.2 KiB
PHP
164 lines
6.2 KiB
PHP
<?php
|
|
|
|
class Workabledxcc_model extends CI_Model
|
|
{
|
|
|
|
public function GetThisWeek()
|
|
{
|
|
$json = file_get_contents('https://cdn.cloudlog.org/read_ng3k_dxped_list.php');
|
|
|
|
// Step 2: Convert the JSON data to an array.
|
|
$data = json_decode($json, true);
|
|
|
|
// Step 3: Create a new array to hold the records for this week.
|
|
$thisWeekRecords = [];
|
|
|
|
// Get the start and end of this week.
|
|
$startOfWeek = (new DateTime())->setISODate((new DateTime())->format('o'), (new DateTime())->format('W'), 1);
|
|
$endOfWeek = (clone $startOfWeek)->modify('+6 days');
|
|
|
|
// Step 4: Iterate over the array.
|
|
foreach ($data as $record) {
|
|
|
|
// Convert "0" and "1" to DateTime objects.
|
|
$startDate = new DateTime($record['0']);
|
|
$endDate = new DateTime($record['1']);
|
|
|
|
// Step 5: Check if the start date or end date is within this week.
|
|
if (($startDate >= $startOfWeek && $startDate <= $endOfWeek) || ($endDate >= $startOfWeek && $endDate <= $endOfWeek)) {
|
|
$endDate = new DateTime($record['1']);
|
|
$now = new DateTime();
|
|
$interval = $now->diff($endDate);
|
|
$daysLeft = $interval->days;
|
|
|
|
// If daysLeft is 0, set it to "Last day"
|
|
if ($daysLeft == 0) {
|
|
$daysLeft = "Last day";
|
|
} else {
|
|
$daysLeft = $daysLeft . " days left";
|
|
}
|
|
|
|
// Add daysLeft to record
|
|
$record['daysLeft'] = $daysLeft;
|
|
// Get Date format
|
|
if ($this->session->userdata('user_date_format')) {
|
|
// If Logged in and session exists
|
|
$custom_date_format = $this->session->userdata('user_date_format');
|
|
} else {
|
|
// Get Default date format from /config/cloudlog.php
|
|
$custom_date_format = $this->config->item('qso_date_format');
|
|
}
|
|
|
|
// Create a new array with the required fields and add it to the main array
|
|
$oldStartDate = DateTime::createFromFormat('Y-m-d', $record['0']);
|
|
|
|
$StartDate = $oldStartDate->format($custom_date_format);
|
|
$record['startDate'] = $StartDate;
|
|
|
|
$oldEndDate = DateTime::createFromFormat('Y-m-d', $record['1']);
|
|
$EndDate = $oldEndDate->format($custom_date_format);
|
|
$record['endDate'] = $EndDate;
|
|
|
|
$record['confirmed'] = true; // or false, depending on your logic
|
|
|
|
$CI = &get_instance();
|
|
$CI->load->model('logbook_model');
|
|
$dxccInfo = $CI->logbook_model->dxcc_lookup($record['callsign'], $startDate->format('Y-m-d'));
|
|
|
|
// Call DXCC Worked function to check if the DXCC has been worked before
|
|
if (isset($dxccInfo['entity'])) {
|
|
$dxccWorkedData = $this->dxccWorked($dxccInfo['entity']);
|
|
$record = array_merge($record, $dxccWorkedData);
|
|
} else {
|
|
// Handle the case where 'entity' is not set in $dxccInfo
|
|
$itemsToAdd = array(
|
|
'workedBefore' => false,
|
|
'confirmed' => false,
|
|
);
|
|
$record = array_merge($record, $itemsToAdd);
|
|
}
|
|
|
|
$thisWeekRecords[] = $record;
|
|
}
|
|
}
|
|
return $thisWeekRecords;
|
|
|
|
}
|
|
|
|
function dxccWorked($country)
|
|
{
|
|
|
|
$return = [
|
|
"workedBefore" => false,
|
|
"confirmed" => false,
|
|
];
|
|
|
|
$user_default_confirmation = $this->session->userdata('user_default_confirmation');
|
|
$this->load->model('logbooks_model');
|
|
$logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
|
|
$this->load->model('logbook_model');
|
|
|
|
if (!empty($logbooks_locations_array)) {
|
|
$this->db->where('COL_PROP_MODE !=', 'SAT');
|
|
|
|
$this->db->where_in('station_id', $logbooks_locations_array);
|
|
$this->db->where('COL_COUNTRY', urldecode($country));
|
|
|
|
$query = $this->db->get($this->config->item('table_name'), 1, 0);
|
|
foreach ($query->result() as $workedBeforeRow) {
|
|
$return['workedBefore'] = true;
|
|
}
|
|
|
|
$extrawhere = '';
|
|
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Q') !== false) {
|
|
$extrawhere = "COL_QSL_RCVD='Y'";
|
|
}
|
|
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'L') !== false) {
|
|
if ($extrawhere != '') {
|
|
$extrawhere .= " OR";
|
|
}
|
|
$extrawhere .= " COL_LOTW_QSL_RCVD='Y'";
|
|
}
|
|
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'E') !== false) {
|
|
if ($extrawhere != '') {
|
|
$extrawhere .= " OR";
|
|
}
|
|
$extrawhere .= " COL_EQSL_QSL_RCVD='Y'";
|
|
}
|
|
|
|
if (isset($user_default_confirmation) && strpos($user_default_confirmation, 'Z') !== false) {
|
|
if ($extrawhere != '') {
|
|
$extrawhere .= " OR";
|
|
}
|
|
$extrawhere .= " COL_QRZCOM_QSO_DOWNLOAD_STATUS='Y'";
|
|
}
|
|
|
|
|
|
$this->load->model('logbook_model');
|
|
$this->db->where('COL_PROP_MODE !=', 'SAT');
|
|
if ($extrawhere != '') {
|
|
$this->db->where('(' . $extrawhere . ')');
|
|
} else {
|
|
$this->db->where("1=0");
|
|
}
|
|
|
|
|
|
$this->db->where_in('station_id', $logbooks_locations_array);
|
|
$this->db->where('COL_COUNTRY', urldecode($country));
|
|
|
|
$query = $this->db->get($this->config->item('table_name'), 1, 0);
|
|
foreach ($query->result() as $workedBeforeRow) {
|
|
$return['confirmed'] = true;
|
|
}
|
|
|
|
return $return;
|
|
} else {
|
|
$return['workedBefore'] = false;
|
|
$return['confirmed'] = false;
|
|
|
|
|
|
return $return;;
|
|
}
|
|
}
|
|
}
|