shop.balmet.com

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

google_base.php (8550B)


      1 <?php
      2 class ControllerExtensionFeedGoogleBase extends Controller {
      3 	private $error = array();
      4 
      5 	public function index() {
      6 		$this->load->language('extension/feed/google_base');
      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 			$this->model_setting_setting->editSetting('feed_google_base', $this->request->post);
     14 
     15 			$this->session->data['success'] = $this->language->get('text_success');
     16 
     17 			$this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=feed', true));
     18 		}
     19 
     20 		if (isset($this->error['warning'])) {
     21 			$data['error_warning'] = $this->error['warning'];
     22 		} else {
     23 			$data['error_warning'] = '';
     24 		}
     25 
     26 		$data['breadcrumbs'] = array();
     27 
     28 		$data['breadcrumbs'][] = array(
     29 			'text' => $this->language->get('text_home'),
     30 			'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
     31 		);
     32 
     33 		$data['breadcrumbs'][] = array(
     34 			'text' => $this->language->get('text_extension'),
     35 			'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=feed', true)
     36 		);
     37 
     38 		$data['breadcrumbs'][] = array(
     39 			'text' => $this->language->get('heading_title'),
     40 			'href' => $this->url->link('extension/feed/google_base', 'user_token=' . $this->session->data['user_token'], true)
     41 		);
     42 
     43 		$data['action'] = $this->url->link('extension/feed/google_base', 'user_token=' . $this->session->data['user_token'], true);
     44 
     45 		$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=feed', true);
     46 
     47 		$data['user_token'] = $this->session->data['user_token'];
     48 
     49 		$data['data_feed'] = HTTP_CATALOG . 'index.php?route=extension/feed/google_base';
     50 
     51 		if (isset($this->request->post['feed_google_base_status'])) {
     52 			$data['feed_google_base_status'] = $this->request->post['feed_google_base_status'];
     53 		} else {
     54 			$data['feed_google_base_status'] = $this->config->get('feed_google_base_status');
     55 		}
     56 
     57 		$data['header'] = $this->load->controller('common/header');
     58 		$data['column_left'] = $this->load->controller('common/column_left');
     59 		$data['footer'] = $this->load->controller('common/footer');
     60 
     61 		$this->response->setOutput($this->load->view('extension/feed/google_base', $data));
     62 	}
     63 
     64 	protected function validate() {
     65 		if (!$this->user->hasPermission('modify', 'extension/feed/google_base')) {
     66 			$this->error['warning'] = $this->language->get('error_permission');
     67 		}
     68 
     69 		return !$this->error;
     70 	}
     71 
     72 	public function install() {
     73 		$this->load->model('extension/feed/google_base');
     74 
     75 		$this->model_extension_feed_google_base->install();
     76 	}
     77 
     78 	public function uninstall() {
     79 		$this->load->model('extension/feed/google_base');
     80 
     81 		$this->model_extension_feed_google_base->uninstall();
     82 	}
     83 
     84 	public function import() {
     85 		$this->load->language('extension/feed/google_base');
     86 
     87 		$json = array();
     88 
     89 		// Check user has permission
     90 		if (!$this->user->hasPermission('modify', 'extension/feed/google_base')) {
     91 			$json['error'] = $this->language->get('error_permission');
     92 		}
     93 
     94 		if (!$json) {
     95 			if (!empty($this->request->files['file']['name']) && is_file($this->request->files['file']['tmp_name'])) {
     96 				// Sanitize the filename
     97 				$filename = basename(html_entity_decode($this->request->files['file']['name'], ENT_QUOTES, 'UTF-8'));
     98 
     99 				// Allowed file extension types
    100 				if (utf8_strtolower(utf8_substr(strrchr($filename, '.'), 1)) != 'txt') {
    101 					$json['error'] = $this->language->get('error_filetype');
    102 				}
    103 
    104 				// Allowed file mime types
    105 				if ($this->request->files['file']['type'] != 'text/plain') {
    106 					$json['error'] = $this->language->get('error_filetype');
    107 				}
    108 
    109 				// Return any upload error
    110 				if ($this->request->files['file']['error'] != UPLOAD_ERR_OK) {
    111 					$json['error'] = $this->language->get('error_upload_' . $this->request->files['file']['error']);
    112 				}
    113 			} else {
    114 				$json['error'] = $this->language->get('error_upload');
    115 			}
    116 		}
    117 
    118 		if (!$json) {
    119 			$json['success'] = $this->language->get('text_success');
    120 
    121 			$this->load->model('extension/feed/google_base');
    122 
    123 			// Get the contents of the uploaded file
    124 			$content = file_get_contents($this->request->files['file']['tmp_name']);
    125 
    126 			$this->model_extension_feed_google_base->import($content);
    127 
    128 			unlink($this->request->files['file']['tmp_name']);
    129 		}
    130 
    131 		$this->response->addHeader('Content-Type: application/json');
    132 		$this->response->setOutput(json_encode($json));
    133 	}
    134 
    135 	public function category() {
    136 		$this->load->language('extension/feed/google_base');
    137 
    138 		if (isset($this->request->get['page'])) {
    139 			$page = $this->request->get['page'];
    140 		} else {
    141 			$page = 1;
    142 		}
    143 
    144 		$data['google_base_categories'] = array();
    145 
    146 		$this->load->model('extension/feed/google_base');
    147 
    148 		$results = $this->model_extension_feed_google_base->getCategories(($page - 1) * 10, 10);
    149 
    150 		foreach ($results as $result) {
    151 			$data['google_base_categories'][] = array(
    152 				'google_base_category_id' => $result['google_base_category_id'],
    153 				'google_base_category'    => $result['google_base_category'],
    154 				'category_id'             => $result['category_id'],
    155 				'category'                => $result['category']
    156 			);
    157 		}
    158 
    159 		$category_total = $this->model_extension_feed_google_base->getTotalCategories();
    160 
    161 		$pagination = new Pagination();
    162 		$pagination->total = $category_total;
    163 		$pagination->page = $page;
    164 		$pagination->limit = 10;
    165 		$pagination->url = $this->url->link('extension/feed/google_base/category', 'user_token=' . $this->session->data['user_token'] . '&page={page}', true);
    166 
    167 		$data['pagination'] = $pagination->render();
    168 
    169 		$data['results'] = sprintf($this->language->get('text_pagination'), ($category_total) ? (($page - 1) * 10) + 1 : 0, ((($page - 1) * 10) > ($category_total - 10)) ? $category_total : ((($page - 1) * 10) + 10), $category_total, ceil($category_total / 10));
    170 
    171 		$this->response->setOutput($this->load->view('extension/feed/google_base_category', $data));
    172 	}
    173 
    174 	public function addCategory() {
    175 		$this->load->language('extension/feed/google_base');
    176 
    177 		$json = array();
    178 
    179 		if (!$this->user->hasPermission('modify', 'extension/feed/google_base')) {
    180 			$json['error'] = $this->language->get('error_permission');
    181 		} elseif (!empty($this->request->post['google_base_category_id']) && !empty($this->request->post['category_id'])) {
    182 			$this->load->model('extension/feed/google_base');
    183 
    184 			$this->model_extension_feed_google_base->addCategory($this->request->post);
    185 
    186 			$json['success'] = $this->language->get('text_success');
    187 		}
    188 
    189 		$this->response->addHeader('Content-Type: application/json');
    190 		$this->response->setOutput(json_encode($json));
    191 	}
    192 
    193 	public function removeCategory() {
    194 		$this->load->language('extension/feed/google_base');
    195 
    196 		$json = array();
    197 
    198 		if (!$this->user->hasPermission('modify', 'extension/feed/google_base')) {
    199 			$json['error'] = $this->language->get('error_permission');
    200 		} else {
    201 			$this->load->model('extension/feed/google_base');
    202 
    203 			$this->model_extension_feed_google_base->deleteCategory($this->request->post['category_id']);
    204 
    205 			$json['success'] = $this->language->get('text_success');
    206 		}
    207 
    208 		$this->response->addHeader('Content-Type: application/json');
    209 		$this->response->setOutput(json_encode($json));
    210 	}
    211 
    212 	public function autocomplete() {
    213 		$json = array();
    214 
    215 		if (isset($this->request->get['filter_name'])) {
    216 			$this->load->model('extension/feed/google_base');
    217 
    218 			if (isset($this->request->get['filter_name'])) {
    219 				$filter_name = $this->request->get['filter_name'];
    220 			} else {
    221 				$filter_name = '';
    222 			}
    223 
    224 			$filter_data = array(
    225 				'filter_name' => html_entity_decode($filter_name, ENT_QUOTES, 'UTF-8'),
    226 				'start'       => 0,
    227 				'limit'       => 5
    228 			);
    229 
    230 			$results = $this->model_extension_feed_google_base->getGoogleBaseCategories($filter_data);
    231 
    232 			foreach ($results as $result) {
    233 				$json[] = array(
    234 					'google_base_category_id' => $result['google_base_category_id'],
    235 					'name'                    => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8'))
    236 				);
    237 			}
    238 		}
    239 
    240 		$this->response->addHeader('Content-Type: application/json');
    241 		$this->response->setOutput(json_encode($json));
    242 	}
    243 }