Ekdant-Online-Store/admininistrator/controller/marketplace/promotion.php

104 lines
3.3 KiB
PHP
Raw Normal View History

2024-08-06 12:21:00 +00:00
<?php
namespace Opencart\Admin\Controller\Marketplace;
/**
* Class Promotion
*
* @package Opencart\Admin\Controller\Marketplace
*/
class Promotion extends \Opencart\System\Engine\Controller {
/**
* @return string
*/
public function index(): string {
$this->load->language('marketplace/promotion');
if (isset($this->request->get['type'])) {
$type = $this->request->get['type'];
} else {
// Just in case there are any direct calls to methods we need to remove them to get the extension type
$pos = strrpos($this->request->get['route'], '.');
if ($pos !== false) {
$route = substr($this->request->get['route'], 0, $pos);
} else {
$route = $this->request->get['route'];
}
$type = substr($route, strrpos($route, '/') + 1);
}
$promotion = $this->cache->get('promotion.' . $type);
if (!$promotion) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, OPENCART_SERVER . 'index.php?route=api/recommended&type=' . $type . '&version=' . VERSION);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$response = curl_exec($curl);
curl_close($curl);
if ($response) {
$promotion = json_decode($response, true);
} else {
$promotion = '';
}
$this->cache->set('promotion.' . $type, $promotion, 3600 * 24);
}
if (isset($promotion['banner'])) {
$data['banner'] = $promotion['banner'];
} else {
$data['banner'] = '';
}
$data['extensions'] = [];
if (isset($promotion['extensions'])) {
$this->load->model('setting/extension');
foreach ($promotion['extensions'] as $result) {
$extension_install_info = $this->model_setting_extension->getInstallByExtensionDownloadId($result['extension_download_id']);
// Download
if (!$extension_install_info) {
$download = $this->url->link('marketplace/marketplace.download', 'user_token=' . $this->session->data['user_token'] . '&extension_id=' . $result['extension_id'] . '&extension_download_id=' . $result['extension_download_id']);
} else {
$download = '';
}
// Install
if ($extension_install_info && !$extension_install_info['status']) {
$install = $this->url->link('marketplace/installer.install', 'user_token=' . $this->session->data['user_token'] . '&extension_install_id=' . $extension_install_info['extension_install_id']);
} else {
$install = '';
}
// Delete
if ($extension_install_info && !$extension_install_info['status']) {
$delete = $this->url->link('marketplace/installer.delete', 'user_token=' . $this->session->data['user_token'] . '&extension_install_id=' . $extension_install_info['extension_install_id']);
} else {
$delete = '';
}
if (!$extension_install_info || !$extension_install_info['status']) {
$data['extensions'][] = [
'name' => $result['name'],
'href' => $this->url->link('marketplace/marketplace.info', 'user_token=' . $this->session->data['user_token'] . '&extension_id=' . $result['extension_id']),
'download' => $download,
'install' => $install,
'delete' => $delete
];
}
}
}
return $this->load->view('marketplace/promotion', $data);
}
}