Index: get_users.php
===================================================================
RCS file: /cvsroot/moodle/contrib/plugins/blocks/email_list/email/get_users.php,v
retrieving revision 1.3
diff -c -w -r1.3 get_users.php
*** get_users.php	22 Aug 2008 17:43:48 -0000	1.3
--- get_users.php	26 Aug 2008 09:21:51 -0000
***************
*** 21,26 ****
--- 21,28 ----
  	$page		= optional_param('page', 0, PARAM_INT);			// Page
  	$perpage	= optional_param('perpage', 7, PARAM_INT);		// Max rows per page
  	$search		= optional_param('search', '', PARAM_RAW);		// Searching users
+ 	$firstinitial 	= optional_param('name', '', PARAM_ALPHA);
+ 	$lastinitial 	= optional_param('lname', '', PARAM_ALPHA);
  
  
  	// Get course, if exist
***************
*** 46,52 ****
      $urlremove = '<a href="#" onclick="action_all_users(\'remove\');" >'.get_string('remove','email', NULL, EMAIL_LANG_PATH).' '.get_string('all'). '</a>';
  
      $tableheaders = array( get_string('user'), $urlto, $urlcc, $urlbcc, $urlremove );
! 	$baseurl = 'participants.php?id='.$courseid.'&amp;roleid='.$roleid.'&amp;group='.$currentgroup.'&amp;perpage='.$perpage.'&amp;search='.$search;
  
  	$table = new email_flexible_table('participants');
  
--- 48,54 ----
      $urlremove = '<a href="#" onclick="action_all_users(\'remove\');" >'.get_string('remove','email', NULL, EMAIL_LANG_PATH).' '.get_string('all'). '</a>';
  
      $tableheaders = array( get_string('user'), $urlto, $urlcc, $urlbcc, $urlremove );
! 	$baseurl = 'participants.php?id='.$courseid.'&amp;roleid='.$roleid.'&amp;group='.$currentgroup.'&amp;perpage='.$perpage.'&amp;search='.$search.'&amp;name='.$firstinitial.'&amp;lname='.$lastinitial;
  
  	$table = new email_flexible_table('participants');
  
***************
*** 161,176 ****
  	    // Searching users
  	    $sqlsearch = '';
  	    if (! empty($search) ) {
! 	    	$searchstring = str_replace("\\\"","\"",$search);
! 		    $parser = new search_parser();
! 		    $lexer = new search_lexer($parser);
! 
! 		    if ($lexer->parse($searchstring)) {
! 		        $parsearray = $parser->get_parsed_array();
! 		        $sqlsearch = ' AND '. search_generate_text_SQL($parsearray, 'u.firstname', 'u.lastname', 'm.userid', 'u.id',
!                              'u.firstname', 'u.lastname', 'm.timecreated', '');
  		    }
  
  	    }
  
  		$totalcount = count_records_sql('SELECT COUNT(distinct u.id) '.$from.$where.$sqlsearch);   // Each user could have > 1
--- 163,178 ----
  	    // Searching users
  	    $sqlsearch = '';
  	    if (! empty($search) ) {
! 		$like = sql_ilike();
!             	$sqlsearch = " AND (u.firstname $like '%$search%' OR u.lastname $like '%$search%')";
              }
  
+             $like = sql_ilike();
+             if ($firstinitial) {
+             	$sqlsearch .= ' AND firstname '. $like .' \''. $firstinitial .'%\'';
+             }
+             if ($lastinitial) {
+              	$sqlsearch .= ' AND lastname '. $like .' \''. $lastinitial .'%\'';
              }
  
  	    $totalcount = count_records_sql('SELECT COUNT(distinct u.id) '.$from.$where.$sqlsearch);   // Each user could have > 1


Index: manage.js
===================================================================
RCS file: /cvsroot/moodle/contrib/plugins/blocks/email_list/email/manage.js,v
retrieving revision 1.1
diff -c -w -r1.1 manage.js
*** manage.js	23 Jul 2008 04:01:47 -0000	1.1
--- manage.js	26 Aug 2008 09:21:51 -0000
***************
*** 248,254 ****
  
  //recarrega la cosa amb els par?metres
  function reloadiframe (params) {
!     var url = "search.php?id=<?php echo $id;?>"+params;
      document.getElementById("idsearch").src = url;
      // document.write( "Somthing" + url);
      //document.getElementById("search_res").innerHTML = url;
--- 248,254 ----
  
  //recarrega la cosa amb els par?metres
  function reloadiframe (params) {
!     var url = "get_users.php?"+params;
      document.getElementById("idsearch").src = url;
      // document.write( "Somthing" + url);
      //document.getElementById("search_res").innerHTML = url;


Index: participants.php
===================================================================
RCS file: /cvsroot/moodle/contrib/plugins/blocks/email_list/email/participants.php,v
retrieving revision 1.3
diff -c -w -r1.3 participants.php
*** participants.php	23 Jul 2008 10:59:56 -0000	1.3
--- participants.php	26 Aug 2008 09:21:51 -0000
***************
*** 27,38 ****
--- 27,62 ----
  	$perpage	= optional_param('perpage', 7, PARAM_INT);		// Max rows per page
  	$search		= optional_param('search', '', PARAM_TEXT);	// Searching users
  
+     $firstinitial = optional_param('name', '', PARAM_ALPHA);
+     $lastinitial = optional_param('lname', '', PARAM_ALPHA);
+ 
  	if ( $courseid ) {
  		require_login($courseid);
  	} else {
  		require_login();
  	}
  
+    	if (!$course = get_record('course', 'id', $courseid)) {
+         	error('Invalid courseid passed');
+     	}
+ 
+ 	// If no group, determine default group
+ 	if ($selgroup == 0) {
+         	$groupmode = groups_get_course_groupmode($course);
+ 
+         	if ($courseid == SITEID) {
+             		$context = get_context_instance(CONTEXT_SYSTEM, SITEID);
+         	} else {
+             		$context = get_context_instance(CONTEXT_COURSE, $courseid);
+         	}
+ 
+         	if ($groupmode == SEPARATEGROUPS and !has_capability('moodle/site:accessallgroups', $context)) {
+             		$groups = groups_get_all_groups($course->id, $USER->id);
+             		$group = array_shift($groups);
+             		$selgroup = $group->id;
+         	}
+     	}
+ 
  	print_header (get_string('selectaction', 'email', NULL, EMAIL_LANG_PATH), '',
  		'', '', '<script type="text/javascript" src="manage.js"></script>');
  
***************
*** 42,54 ****
  		email_choose_users_to_send($courseid, $roleid, $selgroup);
  	} else {
  
  		// Search input
! 		echo '<div onclick="switchMenu(\'srch\', \''.$CFG->pixpath.'/t/\')">';
! 		echo '<img id="srch_icon" src="'.$CFG->pixpath.'/t/switch_plus.gif"/>';
! 		print_spacer(1, 4, false);
! 		echo get_string('searchparticipant','email', NULL, EMAIL_LANG_PATH).'</div>';
  
! 	    echo '<div id="srch" style="display:none;">';
  	    echo '<form method="post" action="participants.php">';
  	    print_textfield ('search', $search, get_string('email', 'searchparticipants', NULL, EMAIL_LANG_PATH), 30, 50);
  
--- 66,118 ----
  		email_choose_users_to_send($courseid, $roleid, $selgroup);
  	} else {
  
+ 		//add the alphabetical search first
+         	echo get_string('alphabetical','email', NULL, EMAIL_LANG_PATH);
+ 
+         	echo '<div id="abcd"><ul>';
+         	//array of letters
+         	$alpha  = explode(',', get_string('alphabet'));
+ 
+         	//alphabet per name
+         	echo '<li>'.get_string('firstname').': ';
+         	$nch = 0;
+         	foreach ($alpha as $ch) {
+             		if ($nch != 0) {
+                 		echo ', ';
+             		}
+             		if ($ch == $firstinitial) {
+                 		echo $ch;
+             		} else {
+                 		echo "<a href=\"$CFG->wwwroot/blocks/email_list/email/participants.php?id=$courseid&amp;group=$selgroup&amp;perpage=$perpage&amp;search=$search&amp;roleid=$roleid&amp;lname=$lastinitial&amp;name=$ch')\">$ch</a>";
+             		}
+             		$nch++;
+         	}
+         	echo '</li>';
+ 
+         	//alfabet per cognom
+         	echo '<li>'.get_string('lastname').': ';
+         	$nch = 0;
+         	foreach ($alpha as $ch) {
+             		if ($nch!=0) {
+                 		echo ', ';
+             		}
+             		if ($ch == $lastinitial) {
+                 		echo $ch;
+             		} else {
+                 		echo "<a href=\"$CFG->wwwroot/blocks/email_list/email/participants.php?id=$courseid&amp;group=$selgroup&amp;perpage=$perpage&amp;search=$search&amp;roleid=$roleid&amp;name=$firstinitial&amp;lname=$ch')\">$ch</a>";
+             		}
+             		$nch++;
+         	}
+ 
+         	//només els del curs
+         	echo "<li><a href=\"$CFG->wwwroot/blocks/email_list/email/participants.php?id=$courseid&amp;all=1&amp;group=$selgroup\">".get_string('allusersincourse','email')."</a></li>";
+ 		echo '</li></ul></div>';
+ 
+ 
  		// Search input
! 		echo get_string('searchparticipant','email', NULL, EMAIL_LANG_PATH);
  
! 	    echo '<div id="srch">';
  	    echo '<form method="post" action="participants.php">';
  	    print_textfield ('search', $search, get_string('email', 'searchparticipants', NULL, EMAIL_LANG_PATH), 30, 50);
  
***************
*** 57,66 ****
  		echo '<input type="hidden" name="page" value="'.$page.'"/>';
  		echo '<input type="hidden" name="perpage" value="'.$perpage.'"/>';
  		echo '<input type="hidden" name="roleid" value="'.$roleid.'"/>';
  	    echo '<input type="submit" name="doit" value="'.get_string('search').'" />' .
  		'</form>';
  	    echo '</div>';
- 
  	    echo '<br />';
  
  	    if ($courseid == SITEID) {
--- 121,132 ----
  		echo '<input type="hidden" name="page" value="'.$page.'"/>';
  		echo '<input type="hidden" name="perpage" value="'.$perpage.'"/>';
  		echo '<input type="hidden" name="roleid" value="'.$roleid.'"/>';
+ 		echo '<input type="hidden" name="name" value="'.$firstinitial.'"/>';
+ 	   	echo '<input type="hidden" name="lname" value="'.$lastinitial.'"/>';
+ 
  	    echo '<input type="submit" name="doit" value="'.get_string('search').'" />' .
  		'</form>';
  	    echo '</div>';
  	    echo '<br />';
  
  	    if ($courseid == SITEID) {
***************
*** 109,117 ****
  	        echo '</div>';
  	    }
  
  
  		echo '<div id="participants"></div>' .
! 		'<iframe id="idsearch" name="bssearch" src="get_users.php?id='.$courseid.'&amp;roleid='.$roleid.'&amp;group='.$selgroup.'&amp;page='.$page.'&amp;perpage='.$perpage.'&amp;search='.$search.'" style="display:none;"></iframe>' . "\n\n";
  	}
  		// Print close button
  		close_window_button();
--- 175,226 ----
  	        echo '</div>';
  	    }
  
+         // Groups
+         $groupmode = groups_get_course_groupmode($course);
+         switch ($groupmode) {
+             case SEPARATEGROUPS:
+                 $grouplabel = get_string('groupsseparate');
+ 
+                 if (!has_capability('moodle/site:accessallgroups', $context)) {
+                     $groups  = groups_get_all_groups($course->id, $USER->id);
+                     $options = array();
+ 
+                     if ($groups and count($groups) == 1) {
+                         $single = true;
+                     }
+                     break;
+                 }
+             case VISIBLEGROUPS:
+                 if (!isset($grouplabel)) {
+                     $grouplabel = get_string('groupsvisible');
+                 }
+                 $groups     = groups_get_all_groups($course->id);
+                 $options    = array(0 => get_string('allparticipants'));
+                 break;
+             case NOGROUPS:
+             default:
+                 $groups = false;
+                 break;
+         }
+         if ($groups) {
+             if (!empty($single)) {
+                 foreach ($groups as $group) {
+                     echo "$grouplabel: ".format_string($group->name);
+                 }
+             } else {
+                 foreach ($groups as $group) {
+                     $options[$group->id] = format_string($group->name);
+                 }
+ 		echo '<div class="groupsform">';
+                 popup_form("$CFG->wwwroot/blocks/email_list/email/participants.php?id=$courseid&amp;perpage=$perpage&amp;search=$search&amp;name=$firstinitial&amp;lname=$lastinitial&amp;contextid=$context->id&amp;roleid=$roleid&amp;group=",
+                            $options, 'groupselect', $selgroup, '', '', '', false, 'self', "$grouplabel:");
+ 		echo '</div><br /><br />';
+             }
+         }
+ 
  
  		echo '<div id="participants"></div>' .
! 		'<iframe id="idsearch" name="bssearch" src="get_users.php?id='.$courseid.'&amp;contextid='.$context->id.'&amp;roleid='.$roleid.'&amp;group='.$selgroup.'&amp;page='.$page.'&amp;perpage='.$perpage.'&amp;search='.$search.'&amp;name='.$firstinitial.'&amp;lname='.$lastinitial.'" style="display:none;"></iframe>' . "\n\n";
  	}
  		// Print close button
  		close_window_button();

