* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ class GamificationTools { public static function parseMetaData($content) { $meta_data = [ 'PREFIX_' => _DB_PREFIX_, ]; //replace define $content = str_replace(array_keys($meta_data), array_values($meta_data), $content); $moduleName = null; preg_match('#&module_name=(.*)&#', $content, $moduleNameMatches); if (isset($moduleNameMatches[1])) { $moduleName = $moduleNameMatches[1]; } //replace meta data $content = preg_replace_callback('#\{config\}([a-zA-Z0-9_-]*)\{/config\}#', function ($matches) { return Configuration::get($matches[1]); }, $content); $content = preg_replace_callback('#\{link\}(.*)\{/link\}#', function ($matches) use ($moduleName) { $adminController = $matches[1]; if ('AdminModules' === $adminController) { $mboIsActive = Module::isInstalled('ps_mbo') && Module::isEnabled('ps_mbo'); if (!$mboIsActive && !empty($moduleName)) { return sprintf('https://addons.prestashop.com/search.php?%s', http_build_query([ 'search_query' => $moduleName, 'utm_source' => 'back-office', 'utm_medium' => 'search', 'utm_campaign' => 'back-office-' . Context::getContext()->language->iso_code, 'utm_content' => 'download', ])); } $adminController = 'AdminPsMboModule'; } return Context::getContext()->link->getAdminLink($adminController); }, $content); $content = preg_replace_callback('#\{employee\}(.*)\{/employee\}#', function ($matches) { return Context::getContext()->employee->$matches[1]; }, $content); $content = preg_replace_callback('#\{language\}(.*)\{/language\}#', function ($matches) { return Context::getContext()->language->$matches[1]; }, $content); $content = preg_replace_callback('#\{country\}(.*)\{/country\}#', function ($matches) { return Context::getContext()->country->$matches[1]; }, $content); return $content; } /** * Retrieve Json api file, forcing gzip compression to save bandwith. * * @param string $url * @param bool $withResponseHeaders * * @return string|bool */ public static function retrieveJsonApiFile($url, $withResponseHeaders = false) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_MAXREDIRS, 2); // @see https://cloud.google.com/appengine/kb/#compression curl_setopt($curl, CURLOPT_ENCODING, 'gzip'); curl_setopt($curl, CURLOPT_USERAGENT, 'gzip'); curl_setopt($curl, CURLOPT_HEADER, $withResponseHeaders); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $content = curl_exec($curl); curl_close($curl); return $content; } }