klarna_invoice.php (5778B)
1 <?php 2 class ControllerExtensionPaymentKlarnaInvoice extends Controller { 3 private $error = array(); 4 5 public function index() { 6 $this->load->language('extension/payment/klarna_invoice'); 7 8 $this->document->setTitle($this->language->get('heading_title')); 9 10 $this->load->model('setting/setting'); 11 12 if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { 13 $status = false; 14 15 foreach ($this->request->post['payment_klarna_invoice'] as $klarna_invoice) { 16 if ($klarna_invoice['status']) { 17 $status = true; 18 19 break; 20 } 21 } 22 23 $klarna_data = array( 24 'klarna_invoice_pclasses' => $this->pclasses, 25 'klarna_invoice_status' => $status 26 ); 27 28 $this->model_setting_setting->editSetting('payment_klarna_invoice', array_merge($this->request->post, $klarna_data)); 29 30 $this->session->data['success'] = $this->language->get('text_success'); 31 32 $this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)); 33 } 34 35 if (isset($this->error['warning'])) { 36 $data['error_warning'] = $this->error['warning']; 37 } else { 38 $data['error_warning'] = ''; 39 } 40 41 if (isset($this->session->data['success'])) { 42 $data['success'] = $this->session->data['success']; 43 44 unset($this->session->data['success']); 45 } else { 46 $data['success'] = ''; 47 } 48 49 $data['breadcrumbs'] = array(); 50 51 $data['breadcrumbs'][] = array( 52 'text' => $this->language->get('text_home'), 53 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) 54 ); 55 56 $data['breadcrumbs'][] = array( 57 'text' => $this->language->get('text_extension'), 58 'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true) 59 ); 60 61 $data['breadcrumbs'][] = array( 62 'text' => $this->language->get('heading_title'), 63 'href' => $this->url->link('extension/payment/klarna_invoice', 'user_token=' . $this->session->data['user_token'], true) 64 ); 65 66 $data['action'] = $this->url->link('extension/payment/klarna_invoice', 'user_token=' . $this->session->data['user_token'], true); 67 68 $data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true); 69 70 $data['countries'] = array(); 71 72 $data['countries'][] = array( 73 'name' => $this->language->get('text_germany'), 74 'code' => 'DEU' 75 ); 76 77 $data['countries'][] = array( 78 'name' => $this->language->get('text_netherlands'), 79 'code' => 'NLD' 80 ); 81 82 $data['countries'][] = array( 83 'name' => $this->language->get('text_denmark'), 84 'code' => 'DNK' 85 ); 86 87 $data['countries'][] = array( 88 'name' => $this->language->get('text_sweden'), 89 'code' => 'SWE' 90 ); 91 92 $data['countries'][] = array( 93 'name' => $this->language->get('text_norway'), 94 'code' => 'NOR' 95 ); 96 97 $data['countries'][] = array( 98 'name' => $this->language->get('text_finland'), 99 'code' => 'FIN' 100 ); 101 102 if (isset($this->request->post['payment_klarna_invoice'])) { 103 $data['payment_klarna_invoice'] = $this->request->post['payment_klarna_invoice']; 104 } else { 105 $data['payment_klarna_invoice'] = $this->config->get('payment_klarna_invoice'); 106 } 107 108 $this->load->model('localisation/geo_zone'); 109 110 $data['geo_zones'] = $this->model_localisation_geo_zone->getGeoZones(); 111 112 $this->load->model('localisation/order_status'); 113 114 $data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses(); 115 116 $file = DIR_LOGS . 'klarna_invoice.log'; 117 118 if (file_exists($file)) { 119 $data['log'] = file_get_contents($file, FILE_USE_INCLUDE_PATH, null); 120 } else { 121 $data['log'] = ''; 122 } 123 124 $data['clear'] = $this->url->link('extension/payment/klarna_invoice/clear', 'user_token=' . $this->session->data['user_token'], true); 125 126 $data['header'] = $this->load->controller('common/header'); 127 $data['column_left'] = $this->load->controller('common/column_left'); 128 $data['footer'] = $this->load->controller('common/footer'); 129 130 $this->response->setOutput($this->load->view('extension/payment/klarna_invoice', $data)); 131 } 132 133 private function validate() { 134 if (!$this->user->hasPermission('modify', 'extension/payment/klarna_invoice')) { 135 $this->error['warning'] = $this->language->get('error_permission'); 136 } 137 138 return !$this->error; 139 } 140 141 private function parseResponse($node, $document) { 142 $child = $node; 143 144 switch ($child->nodeName) { 145 case 'string': 146 $value = $child->nodeValue; 147 break; 148 149 case 'boolean': 150 $value = (string)$child->nodeValue; 151 152 if ($value == '0') { 153 $value = false; 154 } elseif ($value == '1') { 155 $value = true; 156 } else { 157 $value = null; 158 } 159 160 break; 161 162 case 'integer': 163 case 'int': 164 case 'i4': 165 case 'i8': 166 $value = (int)$child->nodeValue; 167 break; 168 169 case 'array': 170 $value = array(); 171 172 $xpath = new DOMXPath($document); 173 $entries = $xpath->query('.//array/data/value', $child); 174 175 for ($i = 0; $i < $entries->length; $i++) { 176 $value[] = $this->parseResponse($entries->item($i)->firstChild, $document); 177 } 178 179 break; 180 181 default: 182 $value = null; 183 } 184 185 return $value; 186 } 187 188 public function clear() { 189 $this->load->language('extension/payment/klarna_invoice'); 190 191 $file = DIR_LOGS . 'klarna_invoice.log'; 192 193 $handle = fopen($file, 'w+'); 194 195 fclose($handle); 196 197 $this->session->data['success'] = $this->language->get('text_success'); 198 199 $this->response->redirect($this->url->link('extension/payment/klarna_invoice', 'user_token=' . $this->session->data['user_token'], true)); 200 } 201 }