[geeklog-cvs] geeklog-1.3/public_html/admin group.php,1.26,1.27

geeklog-cvs-admin at lists.geeklog.net geeklog-cvs-admin at lists.geeklog.net
Fri Jun 20 10:43:09 EDT 2003


Update of /usr/cvs/geeklog/geeklog-1.3/public_html/admin
In directory internal.geeklog.net:/tmp/cvs-serv1702/public_html/admin

Modified Files:
	group.php 
Log Message:
admin/group.php now provides lists of all users in a certain group.


Index: group.php
===================================================================
RCS file: /usr/cvs/geeklog/geeklog-1.3/public_html/admin/group.php,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** group.php	19 Jun 2003 20:01:41 -0000	1.26
--- group.php	20 Jun 2003 14:43:06 -0000	1.27
***************
*** 422,426 ****
  function listgroups() 
  {
! 	global $_TABLES, $_CONF, $LANG_ACCESS;
  
      $retval .= COM_startBlock ($LANG_ACCESS['groupmanager'], '',
--- 422,426 ----
  function listgroups() 
  {
!     global $_TABLES, $_CONF, $LANG_ACCESS;
  
      $retval .= COM_startBlock ($LANG_ACCESS['groupmanager'], '',
***************
*** 438,441 ****
--- 438,442 ----
      $group_templates->set_var('lang_description', $LANG_ACCESS['description']);
      $group_templates->set_var('lang_coregroup', $LANG_ACCESS['coregroup']);
+     $group_templates->set_var('lang_list_users', $LANG_ACCESS['listusers']);
  
      $result = DB_query("SELECT * FROM {$_TABLES['groups']}");
***************
*** 452,455 ****
--- 453,457 ----
          $group_templates->set_var('group_description', $A['grp_descr']);
          $group_templates->set_var('group_core', $core);
+         $group_templates->set_var('lang_list', $LANG_ACCESS['listthem']);
          $group_templates->parse('group_row', 'row', true);
      }
***************
*** 461,464 ****
--- 463,581 ----
  }
  
+ /**
+ * Get a list (actually an array) of all groups this group belongs to.
+ *
+ * @param   basegroup   int     id of group
+ * @return              array   array of all groups 'basegroup' belongs to
+ *
+ */
+ function getGroupList ($basegroup)
+ {
+     global $_TABLES;
+ 
+     $to_check = array ();
+     array_push ($to_check, $basegroup);
+ 
+     $checked = array ();
+ 
+     while (sizeof ($to_check) > 0) {
+         $thisgroup = array_pop ($to_check);
+         if ($thisgroup > 0) {
+             $result = DB_query ("SELECT ug_grp_id FROM {$_TABLES['group_assignments']} WHERE ug_main_grp_id = $thisgroup");
+             $numGroups = DB_numRows ($result);
+             for ($i = 0; $i < $numGroups; $i++) {
+                 $A = DB_fetchArray ($result);
+                 if (!in_array ($A['ug_grp_id'], $checked)) {
+                     if (!in_array ($A['ug_grp_id'], $to_check)) {
+                         array_push ($to_check, $A['ug_grp_id']);
+                     }
+                 }
+             }
+             $checked[] = $thisgroup;
+         }
+     }
+ 
+     return $checked;
+ }
+ 
+ /**
+ * Display a list of all users in a given group.
+ *
+ * @param   grp_id        int      group id
+ * @param   curpage       int      page number
+ * @param   query_limit   int      users per page
+ * @return                string   HTML for user listing
+ *
+ */
+ function listusers ($grp_id, $curpage = 1, $query_limit = 50)
+ {
+     global $_TABLES, $_CONF, $LANG28, $LANG_ACCESS;
+ 
+     $retval = '';
+ 
+     if ($curpage <= 0) {
+         $curpage = 1;
+     }
+     if ($query_limit == 0) {
+         $limit = 50;
+     } else {
+         $limit = $query_limit;
+     }
+     $offset = (($curpage - 1) * $limit);
+ 
+     $groups = getGroupList ($grp_id);
+     $groupList = implode (',', $groups);
+ 
+     $sql = "FROM {$_TABLES['users']},{$_TABLES['group_assignments']} WHERE {$_TABLES['users']}.uid > 1 AND {$_TABLES['users']}.uid = {$_TABLES['group_assignments']}.ug_uid AND ({$_TABLES['group_assignments']}.ug_main_grp_id IN ({$groupList}))";
+     $result = DB_query ("SELECT DISTINCT uid,username,fullname,email " . $sql
+                         . " ORDER BY username LIMIT $offset,$limit");
+     $nrows = DB_numRows ($result);
+ 
+     $cntresult = DB_query ("SELECT COUNT(DISTINCT {$_TABLES['users']}.uid) AS count " . $sql);
+     $C = DB_fetchArray ($cntresult);
+     $num_pages = ceil ($C['count'] / $limit);
+ 
+     $headline = sprintf ($LANG_ACCESS['usersingroup'],
+                          DB_getItem ($_TABLES['groups'], 'grp_name',
+                          "grp_id = '$grp_id'"));
+     $retval .= COM_startBlock ($headline . ' (' . $C['count'] . ')', '',
+                                COM_getBlockTemplate ('_admin_block', 'header'));
+ 
+     $user_templates = new Template ($_CONF['path_layout'] . 'admin/user');
+     $user_templates->set_file (array ('list' => 'plainlist.thtml',
+                                       'row' => 'listitem.thtml'));
+     $user_templates->set_var ('site_url', $_CONF['site_url']);
+     $user_templates->set_var ('site_admin_url', $_CONF['site_admin_url']);
+     $user_templates->set_var ('layout_url', $_CONF['layout_url']);
+     $user_templates->set_var ('lang_adminhome', $LANG28[16]);
+     $user_templates->set_var ('lang_username', $LANG28[3]);
+     $user_templates->set_var ('lang_fullname', $LANG28[4]);
+     $user_templates->set_var ('lang_emailaddress', $LANG28[7]);
+ 
+     for ($i = 0; $i < $nrows; $i++) {
+         $A = DB_fetchArray ($result);
+         $user_templates->set_var ('user_id', $A['uid']);
+         $user_templates->set_var ('username', $A['username']);
+         $user_templates->set_var ('user_fullname', $A['fullname']);
+         $user_templates->set_var ('user_email', $A['email']);
+         $user_templates->parse ('user_row', 'row', true);
+     }
+ 
+     if ($num_pages > 1) {
+         $base_url = $_CONF['site_admin_url']
+                   . '/group.php?mode=listusers&grp_id=' . $grp_id;
+         $user_templates->set_var ('google_paging',
+                 COM_printPageNavigation ($base_url, $curpage, $num_pages));    
+     } else {
+         $user_templates->set_var ('google_paging', '');
+     }
+     $user_templates->parse ('output', 'list');
+     $retval .= $user_templates->finish ($user_templates->get_var ('output'));
+ 
+     $retval .= COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
+ 
+     return $retval;
+ }
+ 
  // MAIN
  if (($mode == $LANG_ACCESS['delete']) && !empty ($LANG_ACCESS['delete'])) {
***************
*** 478,481 ****
--- 595,602 ----
      $display .= editgroup($grp_id);
      $display .= COM_siteFooter();
+ } else if ($mode == 'listusers') {
+     $display .= COM_siteHeader ('menu');
+     $display .= listusers ($grp_id, $page);
+     $display .= COM_siteFooter ();
  }
  else { // 'cancel' or no mode at all





More information about the geeklog-cvs mailing list