diff --git a/admin-dev/themes/default/template/controllers/home/content.tpl b/admin-dev/themes/default/template/controllers/home/content.tpl index 35740fa6e..5665b0693 100644 --- a/admin-dev/themes/default/template/controllers/home/content.tpl +++ b/admin-dev/themes/default/template/controllers/home/content.tpl @@ -110,14 +110,14 @@ $(document).ready(function() {
-

+

{l s='Loading...'}

{$tips_optimization} -

{l s='Loading...'}

+

{l s='Loading...'}

{hook h="displayAdminHomeInfos"} {hook h="displayBackOfficeHome"} {*old name of the hook*} @@ -212,7 +212,7 @@ $(document).ready(function() { { // don't show/hide screencast if it's deactivated {if $employee->bo_show_screencast} - $('#adminpresentation').fadeOut('slow'); + $('#adminpresentation').fadeOut('slow'); {/if} $('#partner_preactivation').fadeOut('slow'); $('#discover_prestashop').fadeOut('slow'); diff --git a/classes/Tools.php b/classes/Tools.php index 22a28c4db..d8ead1538 100644 --- a/classes/Tools.php +++ b/classes/Tools.php @@ -2481,89 +2481,66 @@ exit; return preg_replace('/\\\[px]\{[a-z]\}{1,2}|(\/[a-z]*)u([a-z]*)$/i', "$1$2", $pattern); } + protected static $is_addons_up = true; public static function addonsRequest($request, $params = array()) { - $addons_url = 'api.addons.prestashop.com'; - $postData = ''; - $postDataArray = array( + if (!self::$is_addons_up) + return false; + + $postData = http_build_query(array( 'version' => isset($params['version']) ? $params['version'] : _PS_VERSION_, 'iso_lang' => Tools::strtolower(isset($params['iso_lang']) ? $params['iso_lang'] : Context::getContext()->language->iso_code), 'iso_code' => Tools::strtolower(isset($params['iso_country']) ? $params['iso_country'] : Country::getIsoById(Configuration::get('PS_COUNTRY_DEFAULT'))), - 'shop_url' => urlencode(isset($params['shop_url']) ? $params['shop_url'] : Tools::getShopDomain()), - 'mail' => urlencode(isset($params['email']) ? $params['email'] : Configuration::get('email')) - ); - foreach ($postDataArray as $postDataKey => $postDataValue) - $postData .= '&'.$postDataKey.'='.$postDataValue; - $postData = ltrim($postData, '&'); + 'shop_url' => isset($params['shop_url']) ? $params['shop_url'] : Tools::getShopDomain(), + 'mail' => isset($params['email']) ? $params['email'] : Configuration::get('email') + )); - // Config for each request - if ($request == 'native') + $protocols = array('https'); + switch ($request) { - // Define protocol accepted and post data values for this request - $protocolsList = array('https://' => 443, 'http://' => 80); - $postData .= '&method=listing&action=native'; - } - if ($request == 'must-have') - { - // Define protocol accepted and post data values for this request - $protocolsList = array('https://' => 443, 'http://' => 80); - $postData .= '&method=listing&action=must-have'; - } - if ($request == 'customer') - { - // Define protocol accepted and post data values for this request - $protocolsList = array('https://' => 443); - $postData .= '&method=listing&action=customer&username='.urlencode(trim(Context::getContext()->cookie->username_addons)).'&password='.urlencode(trim(Context::getContext()->cookie->password_addons)); - } - if ($request == 'check_customer') - { - // Define protocol accepted and post data values for this request - $protocolsList = array('https://' => 443); - $postData .= '&method=check_customer&username='.urlencode($params['username_addons']).'&password='.urlencode($params['password_addons']); - } - if ($request == 'module') - { - // Define protocol accepted and post data values for this request - if (isset($params['username_addons']) && isset($params['password_addons'])) - { - $protocolsList = array('https://' => 443); - $postData .= '&method=module&id_module='.urlencode($params['id_module']).'&username='.urlencode($params['username_addons']).'&password='.urlencode($params['password_addons']); - } - else - { - $protocolsList = array('https://' => 443, 'http://' => 80); + case 'native': + $protocols[] = 'http'; + $postData .= '&method=listing&action=native'; + break; + case 'must-have': + $protocols[] = 'http'; + $postData .= '&method=listing&action=must-have'; + break; + case 'customer': + $postData .= '&method=listing&action=customer&username='.urlencode(trim(Context::getContext()->cookie->username_addons)).'&password='.urlencode(trim(Context::getContext()->cookie->password_addons)); + break; + case 'check_customer': + $postData .= '&method=check_customer&username='.urlencode($params['username_addons']).'&password='.urlencode($params['password_addons']); + break; + case 'module': $postData .= '&method=module&id_module='.urlencode($params['id_module']); - } - } - - if ($request == 'install-modules') - { - // Define protocol accepted and post data values for this request - $protocolsList = array('https://' => 443, 'http://' => 80); - $postData .= '&method=listing&action=install-modules'; - + if (isset($params['username_addons']) && isset($params['password_addons'])) + $postData .= '&username='.urlencode($params['username_addons']).'&password='.urlencode($params['password_addons']); + else + $protocols[] = 'http'; + + break; + case 'install-modules': + $protocols[] = 'http'; + $postData .= '&method=listing&action=install-modules'; + break; + default: + return false; } - // Make the request - $opts = array( - 'http'=>array( + $context = stream_context_create(array( + 'http' => array( 'method'=> 'POST', 'content' => $postData, 'header' => 'Content-type: application/x-www-form-urlencoded', 'timeout' => 5, ) - ); - $context = stream_context_create($opts); - foreach ($protocolsList as $protocol => $port) - { - $content = Tools::file_get_contents($protocol.$addons_url, false, $context); - - // If content returned, we cache it - if ($content) + )); + foreach ($protocols as $protocol) + if ($content = Tools::file_get_contents($protocol.'://api.addons.prestashop.com', false, $context)) return $content; - } - // No content, return false + self::$is_addons_up = false; return false; } diff --git a/classes/controller/AdminController.php b/classes/controller/AdminController.php index 0ba74a1c3..82465abf0 100644 --- a/classes/controller/AdminController.php +++ b/classes/controller/AdminController.php @@ -1539,24 +1539,23 @@ class AdminControllerCore extends Controller protected function addToolBarModulesListButton() { - if (!$this->isFresh(Module::CACHE_FILE_DEFAULT_COUNTRY_MODULES_LIST, 86400)) file_put_contents(_PS_ROOT_DIR_.Module::CACHE_FILE_DEFAULT_COUNTRY_MODULES_LIST, Tools::addonsRequest('native')); - $country_module_list_xml = simplexml_load_file(_PS_ROOT_DIR_.Module::CACHE_FILE_DEFAULT_COUNTRY_MODULES_LIST); - if($country_module_list_xml === TRUE) + $country_module_list = file_get_contents(_PS_ROOT_DIR_.Module::CACHE_FILE_DEFAULT_COUNTRY_MODULES_LIST); + if (!empty($country_module_list) && $country_module_list_xml = simplexml_load_string($country_module_list)) { - $country_module_list = array(); + $country_module_list_array = array(); foreach ($country_module_list_xml->module as $k => $m) - $country_module_list[] = (string)$m->name; - $this->tab_modules_list['slider_list'] = array_intersect($this->tab_modules_list['slider_list'], $country_module_list); + $country_module_list_array[] = (string)$m->name; + $this->tab_modules_list['slider_list'] = array_intersect($this->tab_modules_list['slider_list'], $country_module_list_array); } if (is_array($this->tab_modules_list['slider_list']) && count($this->tab_modules_list['slider_list'])) $this->toolbar_btn['modules-list'] = array( - 'href' => '#', - 'desc' => $this->l('Modules List') - ); + 'href' => '#', + 'desc' => $this->l('Modules List') + ); } /** @@ -2946,21 +2945,17 @@ class AdminControllerCore extends Controller public function isFresh($file, $timeout = 604800000) { - if (file_exists(_PS_ROOT_DIR_.$file)) - { - if (filesize(_PS_ROOT_DIR_.$file) < 1) - return false; + if (file_exists(_PS_ROOT_DIR_.$file) && filesize(_PS_ROOT_DIR_.$file) > 0) return ((time() - filemtime(_PS_ROOT_DIR_.$file)) < $timeout); - } - else - return false; + return false; } + protected static $is_prestashop_up = true; public function refresh($file_to_refresh, $external_file) { - $content = Tools::file_get_contents($external_file); - if ($content) + if (self::$is_prestashop_up && $content = Tools::file_get_contents($external_file)) return (bool)file_put_contents(_PS_ROOT_DIR_.$file_to_refresh, $content); + self::$is_prestashop_up = false; return false; }