protected function retrieveData($url)
 {
     if (strpos($url, '.kmz') !== false) {
         if (!class_exists('ZipArchive')) {
             throw new KurogoException("class ZipArchive (php-zip) not available");
         }
         $tmpDir = Kurogo::tempDirectory();
         if (!is_writable($tmpDir)) {
             throw new KurogoConfigurationException("Temporary directory {$tmpDir} not available");
         }
         $tmpFile = $tmpDir . '/tmp.kmz';
         copy($url, $tmpFile);
         $zip = new ZipArchive();
         $zip->open($tmpFile);
         $contents = $zip->getFromIndex(0);
         unlink($tmpFile);
         return $contents;
         // this is false on failure, same as file_get_contents
     }
     return parent::retrieveData($url);
 }