Index: trunk/admin/users/group_select.php
===================================================================
diff -u -r3008 -r3668
--- trunk/admin/users/group_select.php (.../group_select.php) (revision 3008)
+++ trunk/admin/users/group_select.php (.../group_select.php) (revision 3668)
@@ -77,68 +77,31 @@
$objGroups->Page = GetVar('lpn');
-if($source)
-{
- switch($source)
- {
- case "addcategory_permissions":
- $SelectorType = "radio";
- $ado = &GetADODBConnection();
- $sql = "SELECT Distinct(GroupId) FROM ".GetTablePrefix()."Permissions WHERE CatId=".$_GET["CatId"];
- //$sql = "SELECT Distinct(p.GroupId) FROM ".GetTablePrefix()."Permissions AS p LEFT JOIN ".GetTablePrefix()."PortalGroup AS pg ON p.GroupId = pg.GroupId WHERE p.CatId=".$_GET["CatId"]." AND pg.Personal=0";
- //echo "SQL 1: $sql
";
- $rs = $ado->Execute($sql);
- $inlist = array();
- while($rs && !$rs->EOF)
- {
- array_push($inlist,$rs->fields["GroupId"]);
- $rs->MoveNext();
- }
- if(count($inlist)>0)
- {
- $catlist = implode(",",$inlist);
- $field = $objConfig->Get("GroupSelect_SortField");
- if(!strlen($field))
- $field = "Name";
- $orderby = trim($field." ".$order);
- $sql = "SELECT * FROM ".GetTablePrefix()."PortalGroup WHERE GroupId NOT IN (".$catlist.") AND Personal = 0 ORDER BY $orderby";
- //echo "SQL 4: $sql
";
- $objGroups->Query_Item($sql);
- }
- else
- $objGroups->LoadGroups("Personal = 0",trim($objConfig->Get("GroupSelect_SortField")." ".$order));
- break;
-
- case "adduser_groups":
- $SelectorType = "radio";
- $ado = &GetADODBConnection();
- //$sql = sprintf('SELECT GroupId FROM '.GetTablePrefix().'UserGroup WHERE PortalUserId = %s', $_GET["UserId"]);
- $sql = sprintf('SELECT GroupId FROM '.$objSession->GetEditTable("UserGroup").' WHERE PortalUserId = %s', $_GET["UserId"]);
- $inlist = $ado->GetCol($sql);
- if($inlist !== false)
- {
- $catlist = implode(',', $inlist);
- $field = $objConfig->Get("GroupSelect_SortField");
- if( !strlen($field) ) $field = "Name";
- $orderby = $field." ".$order;
- $sql = "SELECT * FROM ".GetTablePrefix()."PortalGroup WHERE GroupId NOT IN (".$catlist.") ORDER BY $orderby";
- $objGroups->Query_Item($sql);
- }
- else
- $objGroups->LoadGroups('',trim($objConfig->Get("GroupSelect_SortField")." ".$order));
- break;
-
- default:
- $objGroups->LoadGroups('',trim($objConfig->Get("GroupSelect_SortField")." ".$order));
- break;
-
- }
-}
-else
-{
- //echo "Loading Groups..
\n";
- $objGroups->LoadGroups("",trim($objConfig->Get("GroupSelect_SortField")." ".$order));
-}
+// NEW: begin
+ $application =& kApplication::Instance();
+ $db =& $application->GetADODBConnection();
+
+ switch ($source) {
+ case 'addcategory_permissions':
+ $SelectorType = 'radio';
+ $sql = 'SELECT DISTINCT(GroupId)
+ FROM '.TABLE_PREFIX.'Permissions
+ WHERE CatId = '.$application->GetVar('CatId');
+ break;
+
+ case 'adduser_groups':
+ $SelectorType = 'radio';
+ $sql = 'SELECT GroupId
+ FROM '.$objSession->GetEditTable('UserGroup').'
+ WHERE PortalUserId = '.$application->GetVar('UserId');
+ break;
+ }
+
+ $skip_groups = $db->GetCol($sql);
+ $where_clause = $skip_groups ? 'GroupId NOT IN ('.implode(',', $skip_groups).')' : '1';
+
+ $objGroups->LoadGroups('(Personal = 0) AND ('.$where_clause.')', trim($objConfig->Get('GroupSelect_SortField').' '.$order));
+// NEW: end
$objListView = new clsListView($objListToolBar,$objGroups);
$objListView->IdField = "ResourceId";