version 1.75, 2007/01/02 12:52:22
|
version 1.77, 2007/07/25 23:17:43
|
Line 68 use strict;
|
Line 68 use strict;
|
use DBI; |
use DBI; |
use lib '/home/httpd/lib/perl/'; |
use lib '/home/httpd/lib/perl/'; |
use LONCAPA::lonmetadata; |
use LONCAPA::lonmetadata; |
|
use LONCAPA; |
use Getopt::Long; |
use Getopt::Long; |
use IO::File; |
use IO::File; |
use HTML::TokeParser; |
use HTML::TokeParser; |
Line 123 my %oldnames = (
|
Line 123 my %oldnames = (
|
'portfolio' => 'portfolio_metadata', |
'portfolio' => 'portfolio_metadata', |
'access' => 'portfolio_access', |
'access' => 'portfolio_access', |
'addedfields' => 'portfolio_addedfields', |
'addedfields' => 'portfolio_addedfields', |
|
'allusers' => 'allusers', |
); |
); |
|
|
my %newnames; |
my %newnames; |
Line 172 foreach my $key (keys(%newnames)) {
|
Line 173 foreach my $key (keys(%newnames)) {
|
} |
} |
|
|
# |
# |
# Create the new metadata and portfolio tables |
# Create the new metadata, portfolio and allusers tables |
foreach my $key (keys(%newnames)) { |
foreach my $key (keys(%newnames)) { |
if ($newnames{$key} ne '') { |
if ($newnames{$key} ne '') { |
my $request = |
my $request = |
Line 221 foreach my $dom (@domains) {
|
Line 222 foreach my $dom (@domains) {
|
no_chdir => 1, |
no_chdir => 1, |
}, join('/',($Apache::lonnet::perlvar{'lonDocRoot'},'res',$dom,$user)) ); |
}, join('/',($Apache::lonnet::perlvar{'lonDocRoot'},'res',$dom,$user)) ); |
} |
} |
# Search for public portfolio files |
# Search for all users and public portfolio files |
my %portusers; |
my (%allusers,%portusers); |
if ($oneuser) { |
if ($oneuser) { |
%portusers = ( |
%portusers = ( |
$oneuser => '', |
$oneuser => '', |
); |
); |
|
%allusers = ( |
|
$oneuser => '', |
|
); |
} else { |
} else { |
my $dir = $Apache::lonnet::perlvar{lonUsersDir}.'/'.$dom; |
my $dir = $Apache::lonnet::perlvar{lonUsersDir}.'/'.$dom; |
&descend_tree($dir,0,\%portusers); |
&descend_tree($dom,$dir,0,\%portusers,\%allusers); |
} |
} |
foreach my $uname (keys(%portusers)) { |
foreach my $uname (keys(%portusers)) { |
my $urlstart = '/uploaded/'.$dom.'/'.$uname; |
my $urlstart = '/uploaded/'.$dom.'/'.$uname; |
Line 257 foreach my $dom (@domains) {
|
Line 261 foreach my $dom (@domains) {
|
&portfolio_logging(%portmetalog); |
&portfolio_logging(%portmetalog); |
} |
} |
} |
} |
|
# Update allusers |
|
foreach my $uname (keys(%allusers)) { |
|
my %userdata = |
|
&Apache::lonnet::get('environment',['firstname','lastname', |
|
'middlename','generation','id','permanentemail'],$dom,$uname); |
|
$userdata{'username'} = $uname; |
|
$userdata{'domain'} = $dom; |
|
my %alluserslog = |
|
&LONCAPA::lonmetadata::process_allusers_data($dbh,$simulate, |
|
\%newnames,$uname,$dom,\%userdata); |
|
foreach my $item (keys(%alluserslog)) { |
|
&log(0,$alluserslog{$item}); |
|
} |
|
} |
} |
} |
|
|
# |
# |
Line 317 sub portfolio_logging {
|
Line 335 sub portfolio_logging {
|
} |
} |
|
|
sub descend_tree { |
sub descend_tree { |
my ($dir,$depth,$alldomusers) = @_; |
my ($dom,$dir,$depth,$allportusers,$alldomusers) = @_; |
if (-d $dir) { |
if (-d $dir) { |
opendir(DIR,$dir); |
opendir(DIR,$dir); |
my @contents = grep(!/^\./,readdir(DIR)); |
my @contents = grep(!/^\./,readdir(DIR)); |
Line 325 sub descend_tree {
|
Line 343 sub descend_tree {
|
$depth ++; |
$depth ++; |
foreach my $item (@contents) { |
foreach my $item (@contents) { |
if ($depth < 4) { |
if ($depth < 4) { |
&descend_tree($dir.'/'.$item,$depth,$alldomusers); |
&descend_tree($dom,$dir.'/'.$item,$depth,$allportusers,$alldomusers); |
} else { |
} else { |
if (-e $dir.'/'.$item.'/file_permissions.db') { |
if (-e $dir.'/'.$item.'/file_permissions.db') { |
|
$$allportusers{$item} = ''; |
|
} |
|
if (!&Apache::lonnet::is_course($dom,$item)) { |
$$alldomusers{$item} = ''; |
$$alldomusers{$item} = ''; |
} |
} |
} |
} |
Line 679 sub write_copyright_count {
|
Line 699 sub write_copyright_count {
|
## (copied from lond, modification of the return value) |
## (copied from lond, modification of the return value) |
sub ishome { |
sub ishome { |
my $author=shift; |
my $author=shift; |
$author=~s/\/home\/httpd\/html\/res\/([^\/]*)\/([^\/]*).*/$1\/$2/; |
$author=~s{/home/httpd/html/res/([^/]*)/([^/]*).*}{$1/$2}; |
my ($udom,$uname)=split(/\//,$author); |
my ($udom,$uname)=split(/\//,$author); |
my $proname=propath($udom,$uname); |
my $proname=propath($udom,$uname); |
if (-e $proname) { |
if (-e $proname) { |
Line 690 sub ishome {
|
Line 710 sub ishome {
|
} |
} |
|
|
## |
## |
## &propath($udom,$uname) |
|
## Returns the path to the users LON-CAPA directory |
|
## (copied from lond) |
|
sub propath { |
|
my ($udom,$uname)=@_; |
|
$udom=~s/\W//g; |
|
$uname=~s/\W//g; |
|
my $subdir=$uname.'__'; |
|
$subdir =~ s/(.)(.)(.).*/$1\/$2\/$3/; |
|
my $proname="$Apache::lonnet::perlvar{'lonUsersDir'}/$udom/$subdir/$uname"; |
|
return $proname; |
|
} |
|
|
|
## |
|
## &declutter($filename) |
## &declutter($filename) |
## Given a filename, returns a url for the filename. |
## Given a filename, returns a url for the filename. |
sub declutter { |
sub declutter { |
Line 714 sub declutter {
|
Line 720 sub declutter {
|
return $thisfn; |
return $thisfn; |
} |
} |
|
|
## |
|
## Escape / Unescape special characters |
|
sub unescape { |
|
my $str=shift; |
|
$str =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; |
|
return $str; |
|
} |
|
|
|
sub escape { |
|
my $str=shift; |
|
$str =~ s/(\W)/"%".unpack('H2',$1)/eg; |
|
return $str; |
|
} |
|