Well that's... not shocking.  I'm imagining the regex that might sanitize a URL 
with all that syntax in it... uuuuughh...   *crumplecrumplecrumple* ~toss~ 

As for my own work... I realized yesterday late that I was going to have to 
find an alternative anyway.  All these maps need to go into Mapcache.  Turning 
that map_object notation into an intuitive mapcache dimension is a big ol Nope. 
 I can likely pass in a parameter on the URL (&fontsize=10)  and then use 
multiple classes in the vein of  CLASS: EXPRESSION (%fontsize% = 10).  Voila.  
Easy mapcache dimension, easy sanitizing, supports a reasonable number of font 
sizes.

So I guess the item for the maintainers to fix is actually the documentation ( 
https://mapserver.org/cgi/controls.html )  which still makes it look like you 
can use map_object notation on the URL in MS8. 

Thanks for the info!

-Tim

> On Oct 6, 2022, at 3:49 PM, Steve Lime <sdl...@gmail.com> wrote:
> 
> Hi Tim: I was wondering if I'd see any messages on that topic. Short story is 
> that the functionality was removed in MS8. I never liked the all-or-nothing 
> aspect of it and was working on a method to control which objects would be 
> allowed to be updated. The solutions I came up with were convoluted and were 
> going to add a lot of complexity to the codebase for little value. That 
> functionality is poorly documented and by itself overly complicates the code. 
> So after a note to mapserver-users trying to judge how much it was used - 
> with limited replies - it was decided to remove it. I'm dealing with my own 
> upgrade issues as a result, but it's worth it in the end IMHO.
> 
> If necessary, it's better to revisit with another method - ideally something 
> along the lines of runsubs. The challenge is specifying when to apply them 
> and how to validate values. Strings are easy, but numeric/color values aren't 
> so we'd need to do something like add runtime bindings (similar to attribute 
> bindings) so you'd write SIZE %mysize% instead. One advantage being you could 
> reuse the variable across layers.
> 
> So, what are the options right now? It sort of depends on your needs. Do you 
> need to only support a couple of sizes for a class or do you truly need *any* 
> size? Options include:
> multiple mapfiles - probably using includes to limit redundancy
> class groups
> if you're using a db backend I think attribute bindings could work paired 
> with runsubs
> DATA "shape FROM (select *, %textsize% AS textsize FROM ...)
> VALIDATION
>     "textsize_default" "13"
>     "textsize" "^8|10|12|14$"
> END
> CLASS
>   LABEL
>     SIZE [textsize] # I think attribute binding works here
>   END
> END
> MapScript - load the mapfile, do the changes you need, render the map
> Happy to discuss further and perhaps other folks have ideas.
> 
> --Steve
> 
> On Thu, Oct 6, 2022 at 12:47 PM Tim Kempisty via MapServer-users 
> <mapserver-users@lists.osgeo.org <mailto:mapserver-users@lists.osgeo.org>> 
> wrote:
> Good afternoon, all.
> 
> I am migrating a project from MS7 to the new Mapserver 8.0.0, and I've 
> stumbled upon evidence that map_object notation support for CGI variable 
> substitution may be broken.
> 
> Here's the relevant doc for CGI Controls:
> 
> https://mapserver.org/cgi/controls.html 
> <https://mapserver.org/cgi/controls.html> 
> 
> Scoll down to the heading:  "Changing map file parameters via a form or a 
> URL" 
> We have been using the map_object notation method to set custom image sizes 
> and font sizes.
> 
> Excuse the messy query string.  The important parts are  "&map_size" and 
> "&map.layer[...]"
> 
> /var/www/cgi-bin/mapserv.cgi -nh 
> "QUERY_STRING=mode=map&map=/usr/local/mapfiles/kempisty/nbm_view/foo.map&layer=genNoDec&model=blend&ver=v4.0&sector=conus&element=maxt&issuancetime=2022-10-06T14:00&validtime=2022-10-08T06:00&mapext=-3270279.3477121103%20-163255.0404466032%202666810.2533767014%203144901.0582670807&map_size=1215+677&map.layer[genNoDec].class[0].label[0]=SIZE+8"
>  > /var/www/html/kempisty/foo7.png
> 
> MS7 gives a map size 1215x677 with labels rendered in 8 point font, as 
> expected.  The same command, using mapserver 8 instead of 7, gives an image 
> size 2345x1597 (map size as defined in the mapfile) with labels rendered in 
> 13 point font (also as defined in the mapfile).
> 
> Using MS8... if I send &mapsize=1215+677 instead of &map_size=1215+677 ... I 
> will get the image at the correct size.  So the predefined CGI control 
> variables still work.  It suggests to me, it is only the map_object notation 
> method that is broken.  Has that been disabled in MS8, or is it now subject 
> to a new configuration requirement that I'm not aware of?
> 
> Relevant string isolated for reference:
> &map_size=1215+677&map.layer[genNoDec].class[0].label[0]=SIZE+8"
> 
> I'm open to other methods of changing font size on the fly.  We did it this 
> way because %var% runtime substitutions aren't supported for CLASS: LABEL: 
> SIZE.
> 
> -Tim Kempisty
> 
> _______________________________________________
> MapServer-users mailing list
> MapServer-users@lists.osgeo.org <mailto:MapServer-users@lists.osgeo.org>
> https://lists.osgeo.org/mailman/listinfo/mapserver-users 
> <https://lists.osgeo.org/mailman/listinfo/mapserver-users>

_______________________________________________
MapServer-users mailing list
MapServer-users@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to