--- loncom/metadata_database/searchcat.pl 2007/07/25 23:17:43 1.77 +++ loncom/metadata_database/searchcat.pl 2010/03/26 13:29:31 1.78 @@ -2,7 +2,7 @@ # The LearningOnline Network # searchcat.pl "Search Catalog" batch script # -# $Id: searchcat.pl,v 1.77 2007/07/25 23:17:43 raeburn Exp $ +# $Id: searchcat.pl,v 1.78 2010/03/26 13:29:31 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -123,7 +123,7 @@ my %oldnames = ( 'portfolio' => 'portfolio_metadata', 'access' => 'portfolio_access', 'addedfields' => 'portfolio_addedfields', - 'allusers' => 'allusers', + 'allusers' => 'allusers', ); my %newnames; @@ -135,6 +135,8 @@ foreach my $key (keys(%oldnames)) { # # Only run if machine is a library server exit if ($Apache::lonnet::perlvar{'lonRole'} ne 'library'); +my $hostid = $Apache::lonnet::perlvar{'lonHostID'}; + # # Make sure this process is running from user=www my $wwwid=getpwnam('www'); @@ -223,7 +225,7 @@ foreach my $dom (@domains) { }, join('/',($Apache::lonnet::perlvar{'lonDocRoot'},'res',$dom,$user)) ); } # Search for all users and public portfolio files - my (%allusers,%portusers); + my (%allusers,%portusers,%courses); if ($oneuser) { %portusers = ( $oneuser => '', @@ -231,14 +233,21 @@ foreach my $dom (@domains) { %allusers = ( $oneuser => '', ); + %courses = &courseiddump($dom,'.',1,'.','.',$oneuser,undef, + undef,'.'); } else { + # get courseIDs for domain on current machine + %courses=&Apache::lonnet::courseiddump($dom,'.',1,'.','.','.',1,[$hostid],'.'); my $dir = $Apache::lonnet::perlvar{lonUsersDir}.'/'.$dom; &descend_tree($dom,$dir,0,\%portusers,\%allusers); } foreach my $uname (keys(%portusers)) { my $urlstart = '/uploaded/'.$dom.'/'.$uname; my $pathstart = &propath($dom,$uname).'/userfiles'; - my $is_course = &Apache::lonnet::is_course($dom,$uname); + my $is_course = ''; + if (exists($courses{$dom.'_'.$uname})) { + $is_course = 1; + } my $curr_perm = &Apache::lonnet::get_portfile_permissions($dom,$uname); my %access = &Apache::lonnet::get_access_controls($curr_perm); foreach my $file (keys(%access)) { @@ -263,6 +272,7 @@ foreach my $dom (@domains) { } # Update allusers foreach my $uname (keys(%allusers)) { + next if (exists($courses{$dom.'_'.$uname})); my %userdata = &Apache::lonnet::get('environment',['firstname','lastname', 'middlename','generation','id','permanentemail'],$dom,$uname); @@ -346,9 +356,9 @@ sub descend_tree { &descend_tree($dom,$dir.'/'.$item,$depth,$allportusers,$alldomusers); } else { if (-e $dir.'/'.$item.'/file_permissions.db') { - $$allportusers{$item} = ''; + $$allportusers{$item} = ''; } - if (!&Apache::lonnet::is_course($dom,$item)) { + if (-e $dir.'/'.$item.'/passwd') { $$alldomusers{$item} = ''; } }