2.0.x-2.2.x/upload/admin/model/module/facebook_business.php (100 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.
*/
class ModelModuleFacebookBusiness extends Model {
private $version = '4.2.1';
public function install() {
$this->db->query("
CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "product_to_facebook` (
`product_to_facebook_id` INT(11) NOT NULL AUTO_INCREMENT,
`product_id` INT(11) NOT NULL,
`google_product_category` int(16) NOT NULL DEFAULT 0,
`condition` varchar(20) NOT NULL,
`age_group` varchar(50) NOT NULL,
`color` varchar(255) NOT NULL,
`gender` varchar(20) NOT NULL,
`material` varchar(255) NOT NULL,
`pattern` varchar(255) NOT NULL,
PRIMARY KEY (`product_to_facebook_id`)
) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci;");
}
public function uninstall() {
$this->db->query("DROP TABLE IF EXISTS `" . DB_PREFIX . "product_to_facebook`;");
}
public function updateFacebookSettings($data = array()) {
foreach ($data as $key => $value) {
$this->db->query("DELETE FROM `" . DB_PREFIX . "setting` WHERE `code` = 'facebook' AND `key` = '" . $this->db->escape($key) . "'");
$this->db->query("INSERT INTO `" . DB_PREFIX . "setting` SET store_id = '0', `code` = 'facebook', `key` = '" . $this->db->escape($key) . "', `value` = '" . $this->db->escape($value) . "'");
}
}
public function getFacebookParams($product_id) {
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "product_to_facebook` WHERE product_id = '" . (int)$product_id . "'");
if ($query->num_rows) {
return array(
'facebook_google_product_category' => $query->row['google_product_category'],
'facebook_condition' => $query->row['condition'],
'facebook_age_group' => $query->row['age_group'],
'facebook_color' => $query->row['color'],
'facebook_gender' => $query->row['gender'],
'facebook_material' => $query->row['material'],
'facebook_pattern' => $query->row['pattern']
);
} else {
return array(
'facebook_google_product_category' => '',
'facebook_condition' => '',
'facebook_age_group' => '',
'facebook_color' => '',
'facebook_gender' => '',
'facebook_material' => '',
'facebook_pattern' => ''
);
}
}
public function checkInstalled() {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "extension WHERE `type` = 'module' AND `code` = 'facebook_business'");
if ($query->num_rows) {
return true;
} else {
return false;
}
}
public function isNewExtensionAvailable() {
$last_check_date = $this->config->get('facebook_last_upgrade_check_date');
// Check for upgrades once a day only if extension is the latest version
if ($last_check_date) {
if (strcmp(date("Y-m-d"), $last_check_date) == 0) {
return false;
}
}
$latest_version = $this->getLatestVersion();
if ($latest_version > $this->version) {
return true;
} else {
$data = array('facebook_last_upgrade_check_date' => date("Y-m-d"));
$this->updateFacebookSettings($data);
return false;
}
}
public function getPluginVersion() {
return $this->version;
}
private function getLatestVersion() {
try {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://api.github.com/repos/facebookincubator/Facebook-for-OpenCart/releases/latest');
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_USERAGENT, "curl");
ob_start();
curl_exec($curl);
curl_close($curl);
$lines = ob_get_contents();
ob_end_clean();
$json = json_decode($lines, true);
if (!$json || !isset($json['tag_name'])) {
return false;
}
$latest_version = $json['tag_name'];
return (substr($latest_version, 0, 1) == 'v') ? substr($latest_version, 1) : false;
} catch (Exception $e) {
return false;
}
}
}