Index: gmap_location.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/gmap/gmap_location.module,v
retrieving revision 1.6
diff -u -r1.6 gmap_location.module
--- gmap_location.module	22 May 2006 06:30:07 -0000	1.6
+++ gmap_location.module	28 May 2006 02:24:08 -0000
@@ -68,19 +68,41 @@
   if (empty($thismap['markers'])) {
     $thismap['markers']=array();
   }
+
+  // Find default marker
+  $default_marker = variable_get('gmap_user_map_marker', 'drupal');
+
+  // Determine if any roles override default setting
+  $roles = user_roles(TRUE);
+  $roles_override = array();
+  foreach ($roles as $rid => $role) {
+    if (variable_get("gmap_role_map_marker_$rid", $default_marker) != $default_marker) {
+      $roles_override[$rid] = $role;
+    }
+  }
+
   while ($u=db_fetch_object($result)) {
+    $account = user_load(array('uid' => $u->oid));
+    $dupes = array_intersect($account->roles, $roles_override);
+    if (empty($dupes)) {
+      $marker = $default_marker;
+    }
+    else {
+      $key = key($dupes);
+      $marker = variable_get("gmap_role_map_marker_$key", $default_marker);
+    }
+
     if (user_access('user locations')) {
-      $account = user_load(array('uid' => $u->oid));
 
       $newmarker['label'] = theme('user_picture', $account);
       $newmarker['label'] .= theme('username', $account);
       $newmarker['point']= $u->latitude.','.$u->longitude;
-      $newmarker['markername']=variable_get('gmap_user_map_marker', 'drupal');
+      $newmarker['markername']=$marker;
       $newmarker['tooltip']=check_plain($account->name);
     }
     else {
       $newmarker['point']= $u->latitude.', '.$u->longitude;
-      $newmarker['markername']=variable_get('gmap_user_map_marker', 'drupal');
+      $newmarker['markername']=$marker;
     }
     $thismap['markers'][]=$newmarker;
   }
@@ -182,6 +204,31 @@
                                               '#title'=>t('Marker for users'),
                                               '#default_value'=>variable_get('gmap_user_map_marker', 'drupal'),
                                               '#size'=>50);
+
+  // Option to use a different marker for each role
+  $form['user']['roles']=array('#type'=>'fieldset',
+                               '#title'=>t('Markers per role'),
+                               '#description'=>t('Use a different marker to denote users in the following roles.'));
+
+  // Retrieve and sort list of roles, sans anonymous user
+  $roles = user_roles(TRUE);
+  asort($roles);
+
+  // Retrieve and sort a list of available markers
+  $marker_images = file_scan_directory(variable_get('gmap_markerfiles','modules/gmap/markers'), '.*\.png$');
+  foreach ($marker_images as $marker) {
+    $markers[$marker->name] = $marker->name;
+  }  
+  asort($markers);
+
+  // Create a selection box per role
+  foreach ($roles as $rid => $role) {
+    $form['user']['roles']["gmap_role_map_marker_$rid"]=array('#type'=>'select',
+                                                              '#title'=>$role,
+                                                              '#default_value'=>variable_get("gmap_role_map_marker_$rid", variable_get('gmap_user_map_marker', 'drupal')),
+                                                              '#options'=>$markers);
+  }
+
   $form['node']=array('#type' => 'fieldset', '#title' => t('Location settings for nodes'));
   $form['node']['gmap_node_map']=array('#type'=>'textfield',
                                        '#title'=>t('Default node map'),
