| 
									
										
										
										
											2019-06-19 21:14:10 +08:00
										 |  |  | <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* | 
					
						
							|  |  |  | 	Controller to interact with the Clublog API | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Clublog extends CI_Controller { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Show frontend if there is one
 | 
					
						
							|  |  |  | 	public function index() { | 
					
						
							| 
									
										
										
										
											2019-06-20 00:36:33 +08:00
										 |  |  | 		$this->config->load('config'); | 
					
						
							| 
									
										
										
										
											2019-06-19 21:14:10 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Upload ADIF to Clublog
 | 
					
						
							| 
									
										
										
										
											2019-06-19 22:00:16 +08:00
										 |  |  | 	public function upload($username) { | 
					
						
							| 
									
										
										
										
											2019-06-20 00:36:33 +08:00
										 |  |  | 		$this->config->load('config'); | 
					
						
							| 
									
										
										
										
											2019-06-20 00:14:07 +08:00
										 |  |  | 		ini_set('memory_limit', '-1'); | 
					
						
							| 
									
										
										
										
											2019-06-20 00:16:17 +08:00
										 |  |  | 		ini_set('display_errors', 1); | 
					
						
							|  |  |  | 		ini_set('display_startup_errors', 1); | 
					
						
							|  |  |  | 		error_reporting(E_ALL); | 
					
						
							| 
									
										
										
										
											2019-06-20 00:19:05 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-19 21:48:06 +08:00
										 |  |  | 		$this->load->helper('file'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->load->model('logbook_model'); | 
					
						
							| 
									
										
										
										
											2019-06-19 22:00:16 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		$this->load->model('clublog_model'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$clublog_info = $this->clublog_model->get_clublog_auth_info($username); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if(!isset($clublog_info['user_name'])) { | 
					
						
							|  |  |  | 			echo "Username unknown"; | 
					
						
							|  |  |  | 			exit; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-19 21:48:06 +08:00
										 |  |  | 		$data['qsos'] = $this->logbook_model->get_clublog_qsos(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-19 23:42:04 +08:00
										 |  |  | 		if($data['qsos']->num_rows()){ | 
					
						
							|  |  |  | 			// Create ADIF File of contacts not uploaded to Clublog
 | 
					
						
							| 
									
										
										
										
											2019-06-19 23:04:15 +08:00
										 |  |  | 			$string = $this->load->view('adif/data/clublog', $data, TRUE); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-19 23:51:46 +08:00
										 |  |  | 			$ranid = uniqid(); | 
					
						
							|  |  |  | 			if ( ! write_file('uploads/clublog'.$ranid.'.adi', $string)) { | 
					
						
							| 
									
										
										
										
											2019-06-19 23:04:15 +08:00
										 |  |  | 			     echo 'Unable to write the file - Make the folder Upload folder has write permissions.'; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			else { | 
					
						
							| 
									
										
										
										
											2019-06-19 23:51:46 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 				$file_info = get_file_info('uploads/clublog'.$ranid.'.adi'); | 
					
						
							| 
									
										
										
										
											2019-06-19 23:04:15 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 				// initialise the curl request
 | 
					
						
							|  |  |  | 				$request = curl_init('https://clublog.org/putlogs.php'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-20 00:36:33 +08:00
										 |  |  | 				if($this->config->item('directory') != "") { | 
					
						
							|  |  |  | 					 $filepath = $_SERVER['DOCUMENT_ROOT']."/".$this->config->item('directory')."/".$file_info['server_path']; | 
					
						
							|  |  |  | 				} else { | 
					
						
							|  |  |  | 					 $filepath = $_SERVER['DOCUMENT_ROOT']."/".$file_info['server_path']; | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-19 23:04:15 +08:00
										 |  |  | 				if (function_exists('curl_file_create')) { // php 5.5+
 | 
					
						
							| 
									
										
										
										
											2019-06-20 00:36:33 +08:00
										 |  |  | 				  $cFile = curl_file_create($filepath); | 
					
						
							| 
									
										
										
										
											2019-06-19 23:04:15 +08:00
										 |  |  | 				} else { // 
 | 
					
						
							| 
									
										
										
										
											2019-06-20 00:36:33 +08:00
										 |  |  | 				  $cFile = '@' . realpath($filepath); | 
					
						
							| 
									
										
										
										
											2019-06-19 23:04:15 +08:00
										 |  |  | 				} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				// send a file
 | 
					
						
							|  |  |  | 				curl_setopt($request, CURLOPT_POST, true); | 
					
						
							|  |  |  | 				curl_setopt( | 
					
						
							|  |  |  | 				    $request, | 
					
						
							|  |  |  | 				    CURLOPT_POSTFIELDS, | 
					
						
							|  |  |  | 				    array( | 
					
						
							|  |  |  | 				      'email' => $clublog_info['user_clublog_name'], | 
					
						
							|  |  |  | 				      'password' => $clublog_info['user_clublog_password'], | 
					
						
							|  |  |  | 				      'callsign' => $clublog_info['user_clublog_callsign'], | 
					
						
							|  |  |  | 				      'api' => "a11c3235cd74b88212ce726857056939d52372bd", | 
					
						
							|  |  |  | 				      'file' => $cFile | 
					
						
							|  |  |  | 				    )); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				// output the response
 | 
					
						
							|  |  |  | 				curl_setopt($request, CURLOPT_RETURNTRANSFER, true); | 
					
						
							| 
									
										
										
										
											2019-06-20 00:51:03 +08:00
										 |  |  | 				$response = curl_exec($request); | 
					
						
							|  |  |  | 				$info = curl_getinfo($request); | 
					
						
							| 
									
										
										
										
											2019-06-19 23:21:16 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-20 00:21:49 +08:00
										 |  |  | 				if(curl_errno($request)) { | 
					
						
							| 
									
										
										
										
											2019-06-20 22:43:58 +08:00
										 |  |  | 				    echo curl_error($request); | 
					
						
							| 
									
										
										
										
											2019-06-20 00:21:27 +08:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2019-06-20 22:16:53 +08:00
										 |  |  | 				curl_close ($request);  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-20 00:21:27 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-19 23:04:15 +08:00
										 |  |  | 				// If Clublog Accepts mark the QSOs
 | 
					
						
							| 
									
										
										
										
											2019-06-20 01:03:48 +08:00
										 |  |  | 				if (preg_match('/\baccepted\b/', $response)) { | 
					
						
							| 
									
										
										
										
											2019-06-19 23:42:04 +08:00
										 |  |  | 					echo "QSOs uploaded and Logbook QSOs marked as sent to Clublog"; | 
					
						
							| 
									
										
										
										
											2019-06-20 22:24:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 					$this->load->model('clublog_model'); | 
					
						
							|  |  |  | 					$this->clublog_model->mark_qsos_sent(); | 
					
						
							| 
									
										
										
										
											2019-06-20 00:19:05 +08:00
										 |  |  | 				} else { | 
					
						
							| 
									
										
										
										
											2019-06-20 23:31:00 +08:00
										 |  |  | 					echo "Error ".$response; | 
					
						
							| 
									
										
										
										
											2019-06-20 00:19:05 +08:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2019-06-20 22:16:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-19 23:04:15 +08:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2019-06-19 23:42:04 +08:00
										 |  |  | 		} else { | 
					
						
							|  |  |  | 			echo "Nothing awaiting upload to clublog"; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2019-06-19 21:48:06 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-19 23:42:04 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2019-06-20 01:03:48 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	function markqso() { | 
					
						
							| 
									
										
										
										
											2019-06-20 22:21:05 +08:00
										 |  |  | 		$this->load->model('clublog_model'); | 
					
						
							| 
									
										
										
										
											2019-06-20 01:03:48 +08:00
										 |  |  | 		$this->clublog_model->mark_qsos_sent(); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2019-06-20 22:53:57 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	function markallnotsent() { | 
					
						
							|  |  |  | 		$this->load->model('clublog_model'); | 
					
						
							|  |  |  | 		$this->clublog_model->mark_all_qsos_notsent(); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2019-06-19 23:42:04 +08:00
										 |  |  | 	 | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2019-06-19 21:14:10 +08:00
										 |  |  | } |