shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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 }