--- serendipity_event_picasa.php 2010-11-25 13:40:56.000000000 -0600 +++ /home/greg/html/serendipity/plugins/serendipity_event_picasa/serendipity_event_picasa.php 2010-11-25 13:48:34.000000000 -0600 @@ -133,11 +133,11 @@ var $xmlReturnData; var $xmlParser; var $error; var $imagePathTags; var $charData; - var $albumPath; + var $albumPathEscaped; function startElementHandler($xmlParser, $elementName, $elementAttribs) { if(0 == strcasecmp($elementName, 'images')) { @@ -159,11 +159,11 @@ else if($this->inImages) { $value = trim($this->charData); if(array_key_exists($lowerElementName, $this->imagePathTags)) { - $value = $this->albumPath . '/' . $value; + $value = $this->albumPathEscaped . '/' . rawurlencode($value); } $this->xmlReturnData['images'][$this->itemCounter][$elementName] = $value; } else { @@ -196,14 +196,21 @@ 'lastimage' => NULL, 'lastthumbnail' => NULL, 'itemthumbnailimage' => NULL ); $this->charData = ''; - $this->albumPath = $albumPath; + + $splitPath = explode("/", $albumPath); + $splitEncodedPath = array(); + foreach($splitPath as $elt) { + $splitEncodedPath[] = rawurlencode($elt); + } + $this->albumPathEscaped = implode("/", $splitEncodedPath); + $this->error = ''; - $xmlStr = file_get_contents(preg_replace('/ /', '%20', $albumPath).'/index.xml'); + $xmlStr = file_get_contents($albumPath . '/index.xml'); if(!$xmlStr || $xmlStr == '') { $this->error = PLUGIN_EVENT_PICASA_ERR_INDEXNOTFOUND." ($albumPath)"; return; } @@ -457,10 +464,14 @@ $albumName = $xmlData['albumName']; $albumCaption = $xmlData['albumCaption']; $albumItemCount = $xmlData['albumItemCount']; + foreach($xmlData['images'] as &$ii) { + $ii[itemCaption] = htmlspecialchars($ii[itemCaption], ENT_QUOTES, false); + } + if($smarty_template == 'none') { $album_code = "

$albumName

"; if($albumCaption) { $album_code .= "
$albumCaption
"; }