<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.6000.16587" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2>Hi</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>the layers's initial state (selected, frozen, ..) are used in 
ClientLayers.php function createSession.</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 
(!is_null($initialMapState-&gt;layers)) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach 
($initialMapState-&gt;layers as $initialLayerState) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$this-&gt;layersData[$initialLayerState-&gt;id] = 
$initialLayerState;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>check if the some initialMapState have been set and if so, set 
the layersData array with the values.</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>replacing/modifying the existing&nbsp;initialMapState process 
seems a bit tricky so I would suggest to insert a new piece of code just after 
the $initialMapState handling but this time you would simply get the values you 
want for your dynamicaly selected layers.</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
foreach ($dynamicInitialMapStates as $dynamicInitialMapState) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$this-&gt;layersData[$dynamicInitialMapState-&gt;id] = 
$dynamicInitialMapState;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>you simply have to be sure to have the correct content in your 
$dynamicInitialMapState variable</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>dynamicInitialMapState&nbsp;should be a array of 
InitialMapState object</FONT></DIV>
<DIV><FONT size=2>InitialMapState-&gt;id</FONT></DIV>
<DIV><FONT size=2>InitialMapState-&gt;location</FONT></DIV>
<DIV><FONT size=2>InitialMapState-&gt;layers where layers is a LayerState 
object</FONT></DIV>
<DIV><FONT size=2>LayerState-&gt;id</FONT></DIV>
<DIV><FONT size=2>LayerState-&gt;hidden</FONT></DIV>
<DIV><FONT size=2>LayerState-&gt;frozen</FONT></DIV>
<DIV><FONT size=2>LayerState-&gt;selected</FONT></DIV>
<DIV><FONT size=2>LayerState-&gt;unfolded</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>$dynamicInitialMapStates should be generated by you. You can 
do it directly in the (extended) layers plugin or in another plugin (in which 
case you have to 
use&nbsp;$this-&gt;cartoclient-&gt;getPluginManager()-&gt;getPlugin('your_plugin_name')-&gt;dynamicInitialMapStates&nbsp;to 
access it)</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>regards</FONT></DIV>
<DIV><FONT size=2>Oliver</FONT></DIV>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=a.muzzetta@i4es.it href="mailto:a.muzzetta@i4es.it">Alessandro 
  Muzzetta</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A 
  title=cartoweb-users@lists.maptools.org 
  href="mailto:cartoweb-users@lists.maptools.org">cartoweb-users@lists.maptools.org</A> 
  </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Wednesday, January 23, 2008 1:25 
  AM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> [Cartoweb-users] Changing 
  selected layers in code</DIV>
  <DIV><BR></DIV>Hello,<BR><BR>is it possible to change the layers that are 
  activated by default directly in code instead of having to change the 
  layers.ini file?<BR><BR>I have several dozen layers of which only two will be 
  active at any given time.&nbsp; Deciding which two layers will be displayed is 
  going to be decided by an algorithm written in php, not by the user.&nbsp; At 
  every page refresh, the algorithm, based on several parameters, will set just 
  two layers to selected. <BR>Is there a way to do this within Cartoweb in 
  php?<BR><BR>The only ugly solution I have thought of so far is to overwrite 
  the layers.ini file with a new one and having the pertinent layers marked as 
  selected.&nbsp; However, aside being ugly, this runs into problems with 
  caching. <BR><BR>Any help would be appreciated.<BR><BR>Thanks<BR 
  clear=all><BR>-- <BR>Alessandro Muzzetta<BR>IES Solutions Srl<BR>Catania 
  Office<BR>Via Vulcano 10 - I-95030 Gravina di Catania, Italy<BR>Email: <A 
  href="mailto:a.muzzetta@i4es.it">a.muzzetta@i4es.it</A><BR>Phone/Fax: +39 
  095211640<BR>Skype: alex-tecnia 
  <P>
  <HR>

  <P></P>_______________________________________________<BR>Cartoweb-users 
  mailing 
  list<BR>Cartoweb-users@lists.maptools.org<BR>http://lists.maptools.org/mailman/listinfo/cartoweb-users<BR></BLOCKQUOTE></BODY></HTML>