[pmwiki-devel] Working with uploads / attachments / $UploadPrefixFmt

Petko Yotov 5ko at 5ko.fr
Tue Mar 22 01:52:58 CDT 2011


On Tuesday 22 March 2011 04:21:51, Steven Leite wrote :
> Part of what it does is reads an existing wiki pages and isolates any
> lines that contain "Attach:".
> 
> Once the lines are isolated, it extracts the file name by taking
> everything after Attach: but before .jpg to determine the path of the file.

It looks like you are writing a replacement of the LunkUpload() function from 
the file scripts/upload.php.

> *The problem *is that if a user has changed the default value of
> $UploadPrefixFmt to use slashes instead of dots (for example), or the
> user has enabled Per Page attachments instead of Group attachments, the
> script breaks.
> 
> I need a way to determine the upload path (or URL) to the image when
> given nothing more than what is on the wiki page (Eg.  Attach:
> Group/Name/File.jpg)
> 
> Another problem which I foresee happening is what if a user specifed
> Attach:File.jpg without specifying the Group or Page name where the
> image is to be stored?  That's another problem, but I haven't got to
> that bridge yet.


You can look how the function LinkUpload() works, it finds the attachment path 
on the filesystem ($filepath) and its url address (the last $path) based on 
the Attach:Group.Name/img.jpg markup and $UploadPrefixFmt and other variables.

Your own function could get all the information LinkUploads gets if you use 
such a line to replace it:
    $LinkFunctions['Attach:'] = 'MyGalleryFunction';

You should really try to use $UploadFileFmt and $UploadPrefixFmt because an 
admin could have organized the uploads directories differently from what you 
can imagine, for example 

  uploads/file.jpg
  uploads/Group/file.jpg
  uploads/Group/Page/file.jpg
  uploads/Group.Page/file.jpg
  uploads/Group/Group.Page/file.jpg
  files/G/Gr/Group/P/Pa/Page/file.jpg see PerGroupSubDirectories

If you use $UploadFileFmt and/or $UploadPrefixFmt, you can have these paths 
automatically, like LinkUpload() does.

Additionally, you could look at other gallery recipes, notably Mini has a 
markup similar to Attach: although slightly more complex, and UploadPlus which 
finds the attachments both in Group/ and in Group/Page upload directories.

  http://www.pmwiki.org/wiki/Cookbook/UploadPlus
  http://www.pmwiki.org/wiki/Cookbook/Mini

Petko



More information about the pmwiki-devel mailing list