From e6964d725880f5faeab7df47e7ddc094d56baf99 Mon Sep 17 00:00:00 2001 From: Shreesh Arora Date: Fri, 13 Oct 2023 14:40:51 +0530 Subject: [PATCH 1/2] update recommendation section update process --- classes/Tools.php | 11 +-- classes/controller/AdminController.php | 71 ++++++++++++++++--- .../admin/AdminDashboardController.php | 13 +--- .../admin/AdminModulesCatalogController.php | 13 +--- js/admin.js | 4 +- 5 files changed, 70 insertions(+), 42 deletions(-) diff --git a/classes/Tools.php b/classes/Tools.php index 58ab06580..88daf16eb 100644 --- a/classes/Tools.php +++ b/classes/Tools.php @@ -3402,14 +3402,9 @@ exit; $post_data .= '&method=listing&action=install-modules'; $post_data .= defined('_PS_HOST_MODE_') ? '-od' : ''; break; - case 'catalog-recommendation': - $protocols[] = 'http'; - $post_data .= '&method=content&action=catalogRecommendation'; - $post_data .= defined('_PS_HOST_MODE_') ? '-od' : ''; - break; - case 'dashboard-recommendation': - $protocols[] = 'http'; - $post_data .= '&method=content&action=dashboardRecommendation'; + case 'recommendation': + $post_data .= '&method=recommendation&controller='; + $post_data .= (isset($params['controller']) ? $params['controller'] : Context::getContext()->controller->controller_name); $post_data .= defined('_PS_HOST_MODE_') ? '-od' : ''; break; case 'check-version': diff --git a/classes/controller/AdminController.php b/classes/controller/AdminController.php index ea3a469f7..9c246856b 100644 --- a/classes/controller/AdminController.php +++ b/classes/controller/AdminController.php @@ -398,6 +398,9 @@ class AdminControllerCore extends Controller /** @var int level for permissions View/read */ const LEVEL_VIEW = 1; + /** @var string path for recomendation content */ + const RECOMMENDATION_CONTENT = ''; + public function __construct() { global $timer_start; @@ -3946,17 +3949,64 @@ class AdminControllerCore extends Controller public function ajaxProcessGetRecommendationContent() { $response = array('success' => false); - if (isset($this->context->cookie->{$this->controller_name.'_closed'}) && $this->context->cookie->{$this->controller_name.'_closed'}) { - $response['success'] = true; - } else { - if (method_exists($this, 'getRecommendationContent')) { - if ($content = $this->getRecommendationContent()) { - $response['success'] = true; - $response['content'] = $content; + if ($this->context->controller->getRecommendationFilePath()) { + $response = $this->getRecommendationContent(); + } + $this->context->cookie->write(); + $this->ajaxDie(json_encode($response)); + } + + public function getRecommendationContent() + { + $content = array( + 'success' => false, + 'cache' => true, + 'html' => '' + ); + + if ($recommendationContent = $this->updateRecommendationContent()) { + $content['cache'] = false; + } + if (!isset($this->context->cookie->{$this->controller_name.'_closed'}) || !$this->context->cookie->{$this->controller_name.'_closed'}) { + if (file_exists(_PS_ROOT_DIR_.$this->context->controller->getRecommendationFilePath())) { + $content['success'] = true; + $content['html'] = file_get_contents(_PS_ROOT_DIR_.$this->context->controller->getRecommendationFilePath()); + } + } + + return $content; + } + + public function updateRecommendationContent() + { + if (!Tools::isFresh($this->context->controller->getRecommendationFilePath(), _TIME_1_DAY_, false)) { + if ($recommendationContent = Tools::addonsRequest( + 'recommendation', + array('controller' => $this->context->controller->controller_name) + )) { + $recommendationContent = json_decode($recommendationContent, true); + if (isset($this->context->cookie->{$this->context->controller->controller_name.'_key'})) { + if ($this->context->cookie->{$this->context->controller->controller_name.'_key'} != $recommendationContent['key']) { + unset($this->context->cookie->{$this->context->controller->controller_name.'_closed'}); + } + } + $this->context->cookie->{$this->context->controller->controller_name.'_key'} = $recommendationContent['key']; + if (isset($recommendationContent['success']) && $recommendationContent['success']) { + @file_put_contents( + _PS_ROOT_DIR_.$this->context->controller->getRecommendationFilePath(), + $recommendationContent['html'] + ); + } elseif (file_exists(_PS_ROOT_DIR_.$this->context->controller->getRecommendationFilePath())) { + unlink(_PS_ROOT_DIR_.$this->context->controller->getRecommendationFilePath()); + } + return $recommendationContent; + } else { + if (file_exists(_PS_ROOT_DIR_.$this->context->controller->getRecommendationFilePath())) { + unlink(_PS_ROOT_DIR_.$this->context->controller->getRecommendationFilePath()); } } } - $this->ajaxDie(json_encode($response)); + return false; } public function ajaxProcessRecommendationClosed() @@ -3966,6 +4016,11 @@ class AdminControllerCore extends Controller $this->ajaxDie(json_encode($response)); } + public function getRecommendationFilePath() + { + return static::RECOMMENDATION_CONTENT; + } + /** * Save list visible columns * diff --git a/controllers/admin/AdminDashboardController.php b/controllers/admin/AdminDashboardController.php index 5f2d57bac..361b00e07 100644 --- a/controllers/admin/AdminDashboardController.php +++ b/controllers/admin/AdminDashboardController.php @@ -27,7 +27,7 @@ class AdminDashboardControllerCore extends AdminController { - const DASHBOARD_RECOMMENDATION_CONTENT = '/cache/dashboard_recommendation.html'; + const RECOMMENDATION_CONTENT = '/cache/dashboard_recommendation.html'; public function __construct() { @@ -493,15 +493,4 @@ class AdminDashboardControllerCore extends AdminController die(json_encode($return)); } - - public function getRecommendationContent() - { - if (!Tools::isFresh(self::DASHBOARD_RECOMMENDATION_CONTENT, _TIME_1_DAY_, false)) { - @file_put_contents(_PS_ROOT_DIR_.self::DASHBOARD_RECOMMENDATION_CONTENT, Tools::addonsRequest('dashboard-recommendation')); - } - if (file_exists(_PS_ROOT_DIR_.self::DASHBOARD_RECOMMENDATION_CONTENT)) { - return Tools::file_get_contents(_PS_ROOT_DIR_.self::DASHBOARD_RECOMMENDATION_CONTENT); - } - return false; - } } diff --git a/controllers/admin/AdminModulesCatalogController.php b/controllers/admin/AdminModulesCatalogController.php index 6b8e7f953..f8e498b3f 100644 --- a/controllers/admin/AdminModulesCatalogController.php +++ b/controllers/admin/AdminModulesCatalogController.php @@ -23,7 +23,7 @@ class AdminModulesCatalogControllerCore extends AdminController public $modules; - const CATALOG_RECOMMENDATION_CONTENT = '/cache/catalog_recommendation.html'; + const RECOMMENDATION_CONTENT = '/cache/catalog_recommendation.html'; const ELEMENT_TYPE_MODULE = 1; const ELEMENT_TYPE_THEME = 2; @@ -240,17 +240,6 @@ class AdminModulesCatalogControllerCore extends AdminController ); } - public function getRecommendationContent() - { - if (!Tools::isFresh(self::CATALOG_RECOMMENDATION_CONTENT, _TIME_1_DAY_, false)) { - @file_put_contents(_PS_ROOT_DIR_.self::CATALOG_RECOMMENDATION_CONTENT, Tools::addonsRequest('catalog-recommendation')); - } - if (file_exists(_PS_ROOT_DIR_.self::CATALOG_RECOMMENDATION_CONTENT)) { - return Tools::file_get_contents(_PS_ROOT_DIR_.self::CATALOG_RECOMMENDATION_CONTENT); - } - return false; - } - public function sortList(&$list, $type) { diff --git a/js/admin.js b/js/admin.js index 4d474721a..e81956a6c 100644 --- a/js/admin.js +++ b/js/admin.js @@ -1616,9 +1616,9 @@ function loadRecommendation() token: token }, success: function(res) { - if (res.success && res.content && res.content.trim()) { + if (res.success && res.html && res.html.trim()) { $('#recommendation-wrapper-skeleton').fadeIn('slow'); - $('#recommendation-wrapper').html(res.content); + $('#recommendation-wrapper').html(res.html); let images = $('#recommendation-wrapper img'); let loaded = 0; let total = $(images).length; From 7431fe587964ab64b63f23bdc702e7db814e01c7 Mon Sep 17 00:00:00 2001 From: Shreesh Arora Date: Thu, 21 Mar 2024 19:29:56 +0530 Subject: [PATCH 2/2] update recommendation content file path constant name and fixed key not exist issue --- classes/controller/AdminController.php | 19 ++++++++++--------- .../admin/AdminDashboardController.php | 2 +- .../admin/AdminModulesCatalogController.php | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/classes/controller/AdminController.php b/classes/controller/AdminController.php index 9c246856b..0c802a493 100644 --- a/classes/controller/AdminController.php +++ b/classes/controller/AdminController.php @@ -399,7 +399,7 @@ class AdminControllerCore extends Controller const LEVEL_VIEW = 1; /** @var string path for recomendation content */ - const RECOMMENDATION_CONTENT = ''; + const RECOMMENDATION_CONTENT_FILE_PATH = ''; public function __construct() { @@ -3967,9 +3967,9 @@ class AdminControllerCore extends Controller if ($recommendationContent = $this->updateRecommendationContent()) { $content['cache'] = false; } - if (!isset($this->context->cookie->{$this->controller_name.'_closed'}) || !$this->context->cookie->{$this->controller_name.'_closed'}) { - if (file_exists(_PS_ROOT_DIR_.$this->context->controller->getRecommendationFilePath())) { - $content['success'] = true; + if (file_exists(_PS_ROOT_DIR_.$this->context->controller->getRecommendationFilePath())) { + $content['success'] = true; + if (!isset($this->context->cookie->{$this->controller_name.'_closed'}) || !$this->context->cookie->{$this->controller_name.'_closed'}) { $content['html'] = file_get_contents(_PS_ROOT_DIR_.$this->context->controller->getRecommendationFilePath()); } } @@ -3985,10 +3985,11 @@ class AdminControllerCore extends Controller array('controller' => $this->context->controller->controller_name) )) { $recommendationContent = json_decode($recommendationContent, true); - if (isset($this->context->cookie->{$this->context->controller->controller_name.'_key'})) { - if ($this->context->cookie->{$this->context->controller->controller_name.'_key'} != $recommendationContent['key']) { - unset($this->context->cookie->{$this->context->controller->controller_name.'_closed'}); - } + if (!isset($this->context->cookie->{$this->context->controller->controller_name.'_key'})) { + $this->context->cookie->{$this->context->controller->controller_name.'_key'} = ''; + } + if ($this->context->cookie->{$this->context->controller->controller_name.'_key'} != $recommendationContent['key']) { + unset($this->context->cookie->{$this->context->controller->controller_name.'_closed'}); } $this->context->cookie->{$this->context->controller->controller_name.'_key'} = $recommendationContent['key']; if (isset($recommendationContent['success']) && $recommendationContent['success']) { @@ -4018,7 +4019,7 @@ class AdminControllerCore extends Controller public function getRecommendationFilePath() { - return static::RECOMMENDATION_CONTENT; + return static::RECOMMENDATION_CONTENT_FILE_PATH; } /** diff --git a/controllers/admin/AdminDashboardController.php b/controllers/admin/AdminDashboardController.php index 361b00e07..2c365ef6b 100644 --- a/controllers/admin/AdminDashboardController.php +++ b/controllers/admin/AdminDashboardController.php @@ -27,7 +27,7 @@ class AdminDashboardControllerCore extends AdminController { - const RECOMMENDATION_CONTENT = '/cache/dashboard_recommendation.html'; + const RECOMMENDATION_CONTENT_FILE_PATH = '/cache/dashboard_recommendation.html'; public function __construct() { diff --git a/controllers/admin/AdminModulesCatalogController.php b/controllers/admin/AdminModulesCatalogController.php index f8e498b3f..4bb3defe0 100644 --- a/controllers/admin/AdminModulesCatalogController.php +++ b/controllers/admin/AdminModulesCatalogController.php @@ -23,7 +23,7 @@ class AdminModulesCatalogControllerCore extends AdminController public $modules; - const RECOMMENDATION_CONTENT = '/cache/catalog_recommendation.html'; + const RECOMMENDATION_CONTENT_FILE_PATH = '/cache/catalog_recommendation.html'; const ELEMENT_TYPE_MODULE = 1; const ELEMENT_TYPE_THEME = 2;