From 7705cc8dcc0555fa52f800d80c3f141837f83190 Mon Sep 17 00:00:00 2001 From: phl0 Date: Sun, 14 May 2023 20:25:03 +0200 Subject: [PATCH] Add bulk download function for eqsl cards --- application/controllers/Eqsl.php | 88 ++++++++++++++++++++++++----- application/views/eqsl/download.php | 14 +++++ 2 files changed, 89 insertions(+), 13 deletions(-) diff --git a/application/controllers/Eqsl.php b/application/controllers/Eqsl.php index 5f9715cb..1b3f7b15 100644 --- a/application/controllers/Eqsl.php +++ b/application/controllers/Eqsl.php @@ -182,16 +182,16 @@ class eqsl extends CI_Controller { $status = ""; // begin script - $ch = curl_init(); + $ch = curl_init(); // basic curl options for all requests - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); // use the URL we built curl_setopt($ch, CURLOPT_URL, $adif); - $result = curl_exec($ch); + $result = curl_exec($ch); $chi = curl_getinfo($ch); curl_close($ch); @@ -507,8 +507,8 @@ class eqsl extends CI_Controller { $image_url = $this->electronicqsl->card_image($username, urlencode($password), $callsign, $band, $mode, $year, $month, $day, $hour, $minute); $file = file_get_contents($image_url, true); - $dom = new domDocument; - $dom->loadHTML($file); + $dom = new domDocument; + $dom->loadHTML($file); $dom->preserveWhiteSpace = false; $images = $dom->getElementsByTagName('img'); @@ -517,7 +517,7 @@ class eqsl extends CI_Controller { exit; } - foreach ($images as $image) + foreach ($images as $image) { header('Content-Type: image/jpg'); $content = file_get_contents("https://www.eqsl.cc".$image->getAttribute('src')); @@ -539,6 +539,57 @@ class eqsl extends CI_Controller { } + function bulk_download_image($id) { + $this->load->model('Eqsl_images'); + + $this->load->model('logbook_model'); + $this->load->model('user_model'); + $qso_query = $this->logbook_model->get_qso($id); + $qso = $qso_query->row(); + $qso_timestamp = strtotime($qso->COL_TIME_ON); + $callsign = $qso->COL_CALL; + $band = $qso->COL_BAND; + $mode = $qso->COL_MODE; + $year = date('Y', $qso_timestamp); + $month = date('m', $qso_timestamp); + $day = date('d', $qso_timestamp); + $hour = date('H', $qso_timestamp); + $minute = date('i', $qso_timestamp); + + $query = $this->user_model->get_by_id($this->session->userdata('user_id')); + $q = $query->row(); + $username = $q->user_eqsl_name; + $password = $q->user_eqsl_password; + + $image_url = $this->electronicqsl->card_image($username, urlencode($password), $callsign, $band, $mode, $year, $month, $day, $hour, $minute); + $file = file_get_contents($image_url, true); + + $dom = new domDocument; + $dom->loadHTML($file); + $dom->preserveWhiteSpace = false; + $images = $dom->getElementsByTagName('img'); + + if(!isset($images) || count($images) == 0) { + echo "Rate Limited"; + exit; + } + + foreach ($images as $image) + { + $content = file_get_contents("https://www.eqsl.cc".$image->getAttribute('src')); + if ($content === false) { + echo "No response"; + exit; + } + $filename = uniqid().'.jpg'; + if (file_put_contents('images/eqsl_card_images/' . '/'.$filename, $content) !== false) { + $this->Eqsl_images->save_image($id, $filename); + } + } + print "Image saved (QSO ID: ".$id.").
"; + + } + public function tools() { // Check logged in $this->load->model('user_model'); @@ -557,15 +608,26 @@ class eqsl extends CI_Controller { $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'); } - $data['page_title'] = "eQSL Card Image Download"; - $this->load->model('eqslmethods_model'); + if ($this->input->post('eqsldownload') == 'download') { + $this->load->model('eqslmethods_model'); + $qslsnotdownloaded = $this->eqslmethods_model->eqsl_not_yet_downloaded(); + foreach ($qslsnotdownloaded->result_array() as $qsl) { + //var_dump($qsl); + $this->bulk_download_image($qsl['COL_PRIMARY_KEY']); + //print "---------------------------------

"; + } + } else { - $data['custom_date_format'] = $this->session->userdata('user_date_format'); - $data['qslsnotdownloaded'] = $this->eqslmethods_model->eqsl_not_yet_downloaded(); + $data['page_title'] = "eQSL Card Image Download"; + $this->load->model('eqslmethods_model'); - $this->load->view('interface_assets/header', $data); - $this->load->view('eqsl/download'); - $this->load->view('interface_assets/footer'); + $data['custom_date_format'] = $this->session->userdata('user_date_format'); + $data['qslsnotdownloaded'] = $this->eqslmethods_model->eqsl_not_yet_downloaded(); + + $this->load->view('interface_assets/header', $data); + $this->load->view('eqsl/download'); + $this->load->view('interface_assets/footer'); + } } public function mark_all_sent() { diff --git a/application/views/eqsl/download.php b/application/views/eqsl/download.php index 6da35457..f0e53f28 100644 --- a/application/views/eqsl/download.php +++ b/application/views/eqsl/download.php @@ -65,6 +65,20 @@ foreach ($qslsnotdownloaded->result_array() as $qsl) { } ?> +
+ load->view('layout/messages'); ?> + + + +
+ +

Cloudlog will use the eQSL credentials from your Cloudlog user profile to connect to eQSL and download confirmations.

+
+ + + + +