aboutsummaryrefslogtreecommitdiffstats
path: root/public/admin/controller/extension/feed
diff options
context:
space:
mode:
authorJesús <heckyel@hyperbola.info>2019-08-18 21:14:58 -0500
committerJesús <heckyel@hyperbola.info>2019-08-18 21:14:58 -0500
commit2eed7b082f83630301e51f57ca8394de228a8605 (patch)
tree1d19962d22d30f99317d9276e4bae7744fc93fc2 /public/admin/controller/extension/feed
downloadlibrecart-2eed7b082f83630301e51f57ca8394de228a8605.tar.lz
librecart-2eed7b082f83630301e51f57ca8394de228a8605.tar.xz
librecart-2eed7b082f83630301e51f57ca8394de228a8605.zip
first commit
Diffstat (limited to 'public/admin/controller/extension/feed')
-rw-r--r--public/admin/controller/extension/feed/google_base.php243
-rw-r--r--public/admin/controller/extension/feed/google_sitemap.php69
-rw-r--r--public/admin/controller/extension/feed/openbaypro.php48
3 files changed, 360 insertions, 0 deletions
diff --git a/public/admin/controller/extension/feed/google_base.php b/public/admin/controller/extension/feed/google_base.php
new file mode 100644
index 0000000..ff88d41
--- /dev/null
+++ b/public/admin/controller/extension/feed/google_base.php
@@ -0,0 +1,243 @@
+<?php
+class ControllerExtensionFeedGoogleBase extends Controller {
+ private $error = array();
+
+ public function index() {
+ $this->load->language('extension/feed/google_base');
+
+ $this->document->setTitle($this->language->get('heading_title'));
+
+ $this->load->model('setting/setting');
+
+ if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
+ $this->model_setting_setting->editSetting('feed_google_base', $this->request->post);
+
+ $this->session->data['success'] = $this->language->get('text_success');
+
+ $this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=feed', true));
+ }
+
+ if (isset($this->error['warning'])) {
+ $data['error_warning'] = $this->error['warning'];
+ } else {
+ $data['error_warning'] = '';
+ }
+
+ $data['breadcrumbs'] = array();
+
+ $data['breadcrumbs'][] = array(
+ 'text' => $this->language->get('text_home'),
+ 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
+ );
+
+ $data['breadcrumbs'][] = array(
+ 'text' => $this->language->get('text_extension'),
+ 'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=feed', true)
+ );
+
+ $data['breadcrumbs'][] = array(
+ 'text' => $this->language->get('heading_title'),
+ 'href' => $this->url->link('extension/feed/google_base', 'user_token=' . $this->session->data['user_token'], true)
+ );
+
+ $data['action'] = $this->url->link('extension/feed/google_base', 'user_token=' . $this->session->data['user_token'], true);
+
+ $data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=feed', true);
+
+ $data['user_token'] = $this->session->data['user_token'];
+
+ $data['data_feed'] = HTTP_CATALOG . 'index.php?route=extension/feed/google_base';
+
+ if (isset($this->request->post['feed_google_base_status'])) {
+ $data['feed_google_base_status'] = $this->request->post['feed_google_base_status'];
+ } else {
+ $data['feed_google_base_status'] = $this->config->get('feed_google_base_status');
+ }
+
+ $data['header'] = $this->load->controller('common/header');
+ $data['column_left'] = $this->load->controller('common/column_left');
+ $data['footer'] = $this->load->controller('common/footer');
+
+ $this->response->setOutput($this->load->view('extension/feed/google_base', $data));
+ }
+
+ protected function validate() {
+ if (!$this->user->hasPermission('modify', 'extension/feed/google_base')) {
+ $this->error['warning'] = $this->language->get('error_permission');
+ }
+
+ return !$this->error;
+ }
+
+ public function install() {
+ $this->load->model('extension/feed/google_base');
+
+ $this->model_extension_feed_google_base->install();
+ }
+
+ public function uninstall() {
+ $this->load->model('extension/feed/google_base');
+
+ $this->model_extension_feed_google_base->uninstall();
+ }
+
+ public function import() {
+ $this->load->language('extension/feed/google_base');
+
+ $json = array();
+
+ // Check user has permission
+ if (!$this->user->hasPermission('modify', 'extension/feed/google_base')) {
+ $json['error'] = $this->language->get('error_permission');
+ }
+
+ if (!$json) {
+ if (!empty($this->request->files['file']['name']) && is_file($this->request->files['file']['tmp_name'])) {
+ // Sanitize the filename
+ $filename = basename(html_entity_decode($this->request->files['file']['name'], ENT_QUOTES, 'UTF-8'));
+
+ // Allowed file extension types
+ if (utf8_strtolower(utf8_substr(strrchr($filename, '.'), 1)) != 'txt') {
+ $json['error'] = $this->language->get('error_filetype');
+ }
+
+ // Allowed file mime types
+ if ($this->request->files['file']['type'] != 'text/plain') {
+ $json['error'] = $this->language->get('error_filetype');
+ }
+
+ // Return any upload error
+ if ($this->request->files['file']['error'] != UPLOAD_ERR_OK) {
+ $json['error'] = $this->language->get('error_upload_' . $this->request->files['file']['error']);
+ }
+ } else {
+ $json['error'] = $this->language->get('error_upload');
+ }
+ }
+
+ if (!$json) {
+ $json['success'] = $this->language->get('text_success');
+
+ $this->load->model('extension/feed/google_base');
+
+ // Get the contents of the uploaded file
+ $content = file_get_contents($this->request->files['file']['tmp_name']);
+
+ $this->model_extension_feed_google_base->import($content);
+
+ unlink($this->request->files['file']['tmp_name']);
+ }
+
+ $this->response->addHeader('Content-Type: application/json');
+ $this->response->setOutput(json_encode($json));
+ }
+
+ public function category() {
+ $this->load->language('extension/feed/google_base');
+
+ if (isset($this->request->get['page'])) {
+ $page = $this->request->get['page'];
+ } else {
+ $page = 1;
+ }
+
+ $data['google_base_categories'] = array();
+
+ $this->load->model('extension/feed/google_base');
+
+ $results = $this->model_extension_feed_google_base->getCategories(($page - 1) * 10, 10);
+
+ foreach ($results as $result) {
+ $data['google_base_categories'][] = array(
+ 'google_base_category_id' => $result['google_base_category_id'],
+ 'google_base_category' => $result['google_base_category'],
+ 'category_id' => $result['category_id'],
+ 'category' => $result['category']
+ );
+ }
+
+ $category_total = $this->model_extension_feed_google_base->getTotalCategories();
+
+ $pagination = new Pagination();
+ $pagination->total = $category_total;
+ $pagination->page = $page;
+ $pagination->limit = 10;
+ $pagination->url = $this->url->link('extension/feed/google_base/category', 'user_token=' . $this->session->data['user_token'] . '&page={page}', true);
+
+ $data['pagination'] = $pagination->render();
+
+ $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));
+
+ $this->response->setOutput($this->load->view('extension/feed/google_base_category', $data));
+ }
+
+ public function addCategory() {
+ $this->load->language('extension/feed/google_base');
+
+ $json = array();
+
+ if (!$this->user->hasPermission('modify', 'extension/feed/google_base')) {
+ $json['error'] = $this->language->get('error_permission');
+ } elseif (!empty($this->request->post['google_base_category_id']) && !empty($this->request->post['category_id'])) {
+ $this->load->model('extension/feed/google_base');
+
+ $this->model_extension_feed_google_base->addCategory($this->request->post);
+
+ $json['success'] = $this->language->get('text_success');
+ }
+
+ $this->response->addHeader('Content-Type: application/json');
+ $this->response->setOutput(json_encode($json));
+ }
+
+ public function removeCategory() {
+ $this->load->language('extension/feed/google_base');
+
+ $json = array();
+
+ if (!$this->user->hasPermission('modify', 'extension/feed/google_base')) {
+ $json['error'] = $this->language->get('error_permission');
+ } else {
+ $this->load->model('extension/feed/google_base');
+
+ $this->model_extension_feed_google_base->deleteCategory($this->request->post['category_id']);
+
+ $json['success'] = $this->language->get('text_success');
+ }
+
+ $this->response->addHeader('Content-Type: application/json');
+ $this->response->setOutput(json_encode($json));
+ }
+
+ public function autocomplete() {
+ $json = array();
+
+ if (isset($this->request->get['filter_name'])) {
+ $this->load->model('extension/feed/google_base');
+
+ if (isset($this->request->get['filter_name'])) {
+ $filter_name = $this->request->get['filter_name'];
+ } else {
+ $filter_name = '';
+ }
+
+ $filter_data = array(
+ 'filter_name' => html_entity_decode($filter_name, ENT_QUOTES, 'UTF-8'),
+ 'start' => 0,
+ 'limit' => 5
+ );
+
+ $results = $this->model_extension_feed_google_base->getGoogleBaseCategories($filter_data);
+
+ foreach ($results as $result) {
+ $json[] = array(
+ 'google_base_category_id' => $result['google_base_category_id'],
+ 'name' => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8'))
+ );
+ }
+ }
+
+ $this->response->addHeader('Content-Type: application/json');
+ $this->response->setOutput(json_encode($json));
+ }
+}
diff --git a/public/admin/controller/extension/feed/google_sitemap.php b/public/admin/controller/extension/feed/google_sitemap.php
new file mode 100644
index 0000000..38c96dc
--- /dev/null
+++ b/public/admin/controller/extension/feed/google_sitemap.php
@@ -0,0 +1,69 @@
+<?php
+class ControllerExtensionFeedGoogleSitemap extends Controller {
+ private $error = array();
+
+ public function index() {
+ $this->load->language('extension/feed/google_sitemap');
+
+ $this->document->setTitle($this->language->get('heading_title'));
+
+ $this->load->model('setting/setting');
+
+ if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
+ $this->model_setting_setting->editSetting('feed_google_sitemap', $this->request->post);
+
+ $this->session->data['success'] = $this->language->get('text_success');
+
+ $this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=feed', true));
+ }
+
+ if (isset($this->error['warning'])) {
+ $data['error_warning'] = $this->error['warning'];
+ } else {
+ $data['error_warning'] = '';
+ }
+
+ $data['breadcrumbs'] = array();
+
+ $data['breadcrumbs'][] = array(
+ 'text' => $this->language->get('text_home'),
+ 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
+ );
+
+ $data['breadcrumbs'][] = array(
+ 'text' => $this->language->get('text_extension'),
+ 'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=feed', true)
+ );
+
+ $data['breadcrumbs'][] = array(
+ 'text' => $this->language->get('heading_title'),
+ 'href' => $this->url->link('extension/feed/google_sitemap', 'user_token=' . $this->session->data['user_token'], true)
+ );
+
+ $data['action'] = $this->url->link('extension/feed/google_sitemap', 'user_token=' . $this->session->data['user_token'], true);
+
+ $data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=feed', true);
+
+ if (isset($this->request->post['feed_google_sitemap_status'])) {
+ $data['feed_google_sitemap_status'] = $this->request->post['feed_google_sitemap_status'];
+ } else {
+ $data['feed_google_sitemap_status'] = $this->config->get('feed_google_sitemap_status');
+ }
+
+ $data['data_feed'] = HTTP_CATALOG . 'index.php?route=extension/feed/google_sitemap';
+
+ $data['header'] = $this->load->controller('common/header');
+ $data['column_left'] = $this->load->controller('common/column_left');
+ $data['footer'] = $this->load->controller('common/footer');
+
+ $this->response->setOutput($this->load->view('extension/feed/google_sitemap', $data));
+ }
+
+ protected function validate() {
+ if (!$this->user->hasPermission('modify', 'extension/feed/google_sitemap')) {
+ $this->error['warning'] = $this->language->get('error_permission');
+ }
+
+ return !$this->error;
+ }
+} \ No newline at end of file
diff --git a/public/admin/controller/extension/feed/openbaypro.php b/public/admin/controller/extension/feed/openbaypro.php
new file mode 100644
index 0000000..10e8994
--- /dev/null
+++ b/public/admin/controller/extension/feed/openbaypro.php
@@ -0,0 +1,48 @@
+<?php
+class ControllerExtensionFeedOpenbaypro extends Controller {
+ private $error = array();
+
+ public function index() {
+ $this->response->redirect($this->url->link('marketplace/openbay', 'user_token=' . $this->session->data['user_token'], true));
+ }
+
+ protected function validate() {
+ if (!$this->user->hasPermission('modify', 'extension/module/openbaypro')) {
+ $this->error['warning'] = $this->language->get('error_permission');
+ }
+
+ return !$this->error;
+ }
+
+ public function install() {
+ $this->load->model('setting/setting');
+ $this->load->model('setting/event');
+
+ $this->model_user_user_group->addPermission($this->user->getGroupId(), 'access', 'marketplace/openbay');
+ $this->model_user_user_group->addPermission($this->user->getGroupId(), 'modify', 'marketplace/openbay');
+
+ $settings = $this->model_setting_setting->getSetting('feed_openbaypro');
+ $settings['feed_openbaypro_status'] = 1;
+ $settings['feed_openbaypro_language'] = "en_GB";
+ $this->model_setting_setting->editSetting('feed_openbaypro', $settings);
+
+ $this->model_setting_event->addEvent('openbay_product_del_after', 'admin/model/catalog/product/deleteProduct/after', 'marketplace/openbay/eventDeleteProduct');
+
+ $this->model_setting_event->addEvent('openbay_product_edit_after', 'admin/model/catalog/product/editProduct/after', 'marketplace/openbay/eventEditProduct');
+
+ $this->model_setting_event->addEvent('openbay_menu', 'admin/view/common/column_left/before', 'marketplace/openbay/eventMenu');
+ }
+
+ public function uninstall() {
+ $this->load->model('setting/setting');
+ $this->load->model('setting/event');
+
+ $settings = $this->model_setting_setting->getSetting('feed_openbaypro');
+ $settings['feed_openbaypro_status'] = 0;
+ $this->model_setting_setting->editSetting('feed_openbaypro', $settings);
+
+ $this->model_setting_event->deleteEventByCode('openbay_product_del_after');
+ $this->model_setting_event->deleteEventByCode('openbay_product_edit_after');
+ $this->model_setting_event->deleteEventByCode('openbay_menu');
+ }
+}