2.0.x-2.2.x/upload/admin/controller/module/facebook_business.php (164 lines of code) (raw):

<?php /** * Copyright (c) Facebook, Inc. and its affiliates. * All rights reserved. * * This source code is licensed under the license found in the * LICENSE file in the root directory of this source tree. */ require_once(DIR_SYSTEM . 'library/vendor/facebook_business/vendor/autoload.php'); use FacebookAds\Object\ServerSide\AdsPixelSettings; class ControllerModuleFacebookBusiness extends Controller { private $error = array(); private $opencart_server_base_url = 'https://opencart-plugin.com'; private $facebook_app_id = '785409108588782'; public function index() { $data = $this->load->language('module/facebook_business'); $this->document->setTitle(strip_tags($this->language->get('heading_title'))); $this->load->model('setting/setting'); if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { $this->model_setting_setting->editSetting('facebook_business', $this->request->post); $this->clearProductFeed(); $this->session->data['success'] = $this->language->get('text_success'); $this->response->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL')); } $this->load->model('module/facebook_business'); // For LWI integration $data['business_name'] = $this->config->get('config_name'); $data['external_business_id'] = HTTPS_CATALOG; $data['timezone'] = date_default_timezone_get(); $data['currency'] = strtoupper(addslashes($this->config->get('config_currency'))); $plugin_version = $this->model_module_facebook_business->getPluginVersion(); $data['opencart_iframe_url'] = $this->opencart_server_base_url . '/facebook?' . 'external_business_id=' . urlencode(HTTPS_CATALOG) . '&business_name=' . addslashes($this->config->get('config_name')) . '&feed_url=' . urlencode(HTTPS_CATALOG . 'index.php?route=module/facebook_business/genFeed') . '&feed_ping_url=' . urlencode(HTTPS_CATALOG . 'index.php?route=module/facebook_business/genFeedPing') . '&timezone=' . date_default_timezone_get() . '&currency=' . strtoupper(addslashes($this->config->get('config_currency'))) . '&version=' . $plugin_version; if ($this->config->get('config_maintenance')) { $data['error_maintenance_mode'] = $this->language->get('error_maintenance_mode'); } else { $data['error_maintenance_mode'] = ''; } if (!empty($this->config->get('facebook_dia_setting_id'))) { $data['opencart_iframe_url'] .= '&merchant_settings_id=' . $this->config->get('facebook_dia_setting_id'); } if (!empty($this->config->get('facebook_fbe_v2_installed'))) { $data['opencart_iframe_url'] .= '&fbe_v2_installed=' . $this->config->get('facebook_fbe_v2_installed'); } if (!empty($this->config->get('facebook_use_s2s'))) { $data['opencart_iframe_url'] .= '&s2s_configured=' . $this->config->get('facebook_use_s2s'); } $data['access_token'] = $this->config->get('facebook_system_user_access_token'); $data['opencart_server_base_url'] = $this->opencart_server_base_url; $data['facebook_app_id'] = $this->facebook_app_id; $data['token'] = $this->session->data['token']; $data['redirect_uri'] = $this->url->link('module/facebook_business', 'token=' . $this->session->data['token'], true); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], true), ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_extension'), 'href' => $this->url->link('extension/module', 'token=' . $this->session->data['token'] . '&type=module', true), ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('module/facebook_business', 'token=' . $this->session->data['token'], true) ); $data['action'] = $this->url->link('module/facebook_business', 'token=' . $this->session->data['token'], true); $data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'] . '&type=module', true); if (isset($this->error['warning'])) { $data['error_warning'] = $this->error['warning']; } else { $data['error_warning'] = ''; } if (isset($this->request->post['facebook_business_cookie_bar_status'])) { $data['facebook_business_cookie_bar_status'] = $this->request->post['facebook_business_cookie_bar_status']; } else { $data['facebook_business_cookie_bar_status'] = $this->config->get('facebook_business_cookie_bar_status'); } if (isset($this->request->post['facebook_business_sync_specials_status'])) { $data['facebook_business_sync_specials_status'] = $this->request->post['facebook_business_sync_specials_status']; } else { $data['facebook_business_sync_specials_status'] = $this->config->get('facebook_business_sync_specials_status'); } $data['text_plugin_version'] = sprintf($this->language->get('text_plugin_version'), $plugin_version); $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('module/facebook_business.tpl', $data)); } public function install() { if (!$this->user->hasPermission('modify', 'extension/module')) { return; } $this->load->model('module/facebook_business'); $this->model_module_facebook_business->install(); } public function uninstall() { if (!$this->user->hasPermission('modify', 'extension/module')) { return; } $this->load->model('module/facebook_business'); $this->model_module_facebook_business->uninstall(); } protected function validate() { if (!$this->user->hasPermission('modify', 'module/facebook_business')) { $this->error['warning'] = $this->language->get('error_permission'); } return !$this->error; } public function updateSettings() { $json = array(); $this->load->model('module/facebook_business'); if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { if (isset($this->request->post['facebook_pixel_id'])) { $this->request->post['facebook_use_s2s'] = true; $this->request->post['facebook_pixel_use_pii'] = $this->getPixelAAMSettings($this->request->post['facebook_pixel_id']); $this->request->post['facebook_pixel_enabled_aam_fields'] = $this->getPixelEnabledAAMFields($this->request->post['facebook_pixel_id']); $this->request->post['facebook_last_aam_check_time'] = time(); } $this->model_module_facebook_business->updateFacebookSettings($this->request->post); $json['success'] = true; } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } public function deleteSettings() { $json = array(); $this->load->model('setting/setting'); if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { $this->model_setting_setting->deleteSetting('facebook'); $json['success'] = true; } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } private function getPixelAAMSettings($pixel_id) { $settings = AdsPixelSettings::buildFromPixelId($pixel_id); if ($settings !== null) { return $settings->getEnableAutomaticMatching() ? 'true' : 'false'; } return 'false'; } private function getPixelEnabledAAMFields($pixel_id) { $settings = AdsPixelSettings::buildFromPixelId($pixel_id); if ($settings !== null) { $enabled_aam_fileds = $settings->getEnabledAutomaticMatchingFields(); return implode(',', $enabled_aam_fileds); } return ''; } private function clearProductFeed() { $feed_file_dir = ''; if (is_writable(DIR_DOWNLOAD)) { $feed_file_dir = DIR_DOWNLOAD; } elseif (is_writable(DIR_MODIFICATION)) { $feed_file_dir = DIR_MODIFICATION; } elseif (is_writable(DIR_LOGS)) { $feed_file_dir = DIR_LOGS; } if ($feed_file_dir) { $product_feed_path = $feed_file_dir . 'fbe_product_catalog.csv'; if (is_file($product_feed_path)) { unlink($product_feed_path); } } } }