diff --git a/plugins/UserCountryMap/Controller.php b/plugins/UserCountryMap/Controller.php index 05d92b4b3b6ae538c35d2ee815813c6335ca08e1..e367bf5ecf80b5b4820782e7360675e1b8cb6d82 100644 --- a/plugins/UserCountryMap/Controller.php +++ b/plugins/UserCountryMap/Controller.php @@ -30,6 +30,8 @@ class Piwik_UserCountryMap_Controller extends Piwik_Controller $token_auth = Piwik::getCurrentUserTokenAuth(); $view = Piwik_View::factory('worldmap'); + + // will be escaped in the template $view->dataUrl = "?module=API" . "&method=API.getProcessedReport&format=XML" . "&apiModule=UserCountry&apiAction=getCountry" @@ -58,19 +60,25 @@ class Piwik_UserCountryMap_Controller extends Piwik_Controller . '&filter_limit=-1' ); $metaData = $request->process(); - + $metrics = array(); - foreach ($metaData[0]['metrics'] as $id => $val) + if(!is_array($metaData)) + { + throw new Exception("Error while requesting Map reports for website " . (int)$idSite); + } + else { - if (Piwik_Common::getRequestVar('period') == 'day' || $id != 'nb_uniq_visitors') { + foreach ($metaData[0]['metrics'] as $id => $val) + { + if (Piwik_Common::getRequestVar('period') == 'day' || $id != 'nb_uniq_visitors') { + $metrics[] = array($id, $val); + } + } + foreach ($metaData[0]['processedMetrics'] as $id => $val) + { $metrics[] = array($id, $val); } - } - foreach ($metaData[0]['processedMetrics'] as $id => $val) - { - $metrics[] = array($id, $val); } - $view->metrics = $metrics; $view->defaultMetric = 'nb_visits'; echo $view->render(); diff --git a/plugins/UserCountryMap/templates/worldmap.tpl b/plugins/UserCountryMap/templates/worldmap.tpl index 70eba516b06c574b42a7211fa9c12f40e9c8c372..b37d523730ff07467c15e576f8451d4fa9a54e97 100644 --- a/plugins/UserCountryMap/templates/worldmap.tpl +++ b/plugins/UserCountryMap/templates/worldmap.tpl @@ -28,7 +28,7 @@ var isSafari = (navigator.userAgent.toLowerCase().indexOf("safari") != -1 && navigator.userAgent.toLowerCase().indexOf("chrome") == -1); - fv.dataUrl = encodeURIComponent("{$dataUrl}"); + fv.dataUrl = encodeURIComponent("{$dataUrl|escape:'javascript'}"); fv.hueMin = {$hueMin}; fv.hueMax = {$hueMax}; fv.satMin = {$satMin};