version 1.817, 2006/12/28 20:09:10
|
version 1.822, 2007/01/11 21:09:10
|
Line 1701 sub removeuserfile {
|
Line 1701 sub removeuserfile {
|
if (($fname !~ /\.meta$/) && (&is_portfolio_file($fname))) { |
if (($fname !~ /\.meta$/) && (&is_portfolio_file($fname))) { |
my $metafile = $fname.'.meta'; |
my $metafile = $fname.'.meta'; |
my $metaresult = &removeuserfile($docuname,$docudom,$metafile); |
my $metaresult = &removeuserfile($docuname,$docudom,$metafile); |
|
my ($group,$file); |
|
if ($fname =~ /^groups\/(\w+)\/portfolio(\/.+)$/) { |
|
$group = $1; |
|
$file = $2; |
|
} elsif ($fname =~ /^portfolio(\/.+)$/) { |
|
$file = $1; |
|
} |
|
my $sqlresult = |
|
&update_portfolio_table($docuname,$docudom,$group.$file, |
|
'portfolio_metadata',$group, |
|
'delete'); |
} |
} |
} |
} |
return $result; |
return $result; |
Line 1723 sub renameuserfile {
|
Line 1734 sub renameuserfile {
|
my $newmeta = $new.'.meta'; |
my $newmeta = $new.'.meta'; |
my $metaresult = |
my $metaresult = |
&renameuserfile($docuname,$docudom,$oldmeta,$newmeta); |
&renameuserfile($docuname,$docudom,$oldmeta,$newmeta); |
|
my ($group,$file); |
|
if ($old =~ /^groups\/(\w+)\/portfolio(\/.+)$/) { |
|
$group = $1; |
|
$file = $2; |
|
} elsif ($old =~ /^portfolio(\/.+)$/) { |
|
$file = $1; |
|
} |
|
my $sqlresult = |
|
&update_portfolio_table($docuname,$docudom,$group.$file, |
|
'portfolio_metadata',$group, |
|
'delete'); |
} |
} |
} |
} |
return $result; |
return $result; |
Line 3048 sub dump {
|
Line 3070 sub dump {
|
|
|
sub dumpstore { |
sub dumpstore { |
my ($namespace,$udomain,$uname,$regexp,$range)=@_; |
my ($namespace,$udomain,$uname,$regexp,$range)=@_; |
return &dump($namespace,$udomain,$uname,$regexp,$range); |
if (!$udomain) { $udomain=$env{'user.domain'}; } |
|
if (!$uname) { $uname=$env{'user.name'}; } |
|
my $uhome=&homeserver($uname,$udomain); |
|
if ($regexp) { |
|
$regexp=&escape($regexp); |
|
} else { |
|
$regexp='.'; |
|
} |
|
my $rep=&reply("dump:$udomain:$uname:$namespace:$regexp:$range",$uhome); |
|
my @pairs=split(/\&/,$rep); |
|
my %returnhash=(); |
|
foreach my $item (@pairs) { |
|
my ($key,$value)=split(/=/,$item,2); |
|
next if ($key =~ /^error: 2 /); |
|
$returnhash{$key}=&thaw_unescape($value); |
|
} |
|
return %returnhash; |
} |
} |
|
|
# -------------------------------------------------------------- keys interface |
# -------------------------------------------------------------- keys interface |
Line 3082 sub currentdump {
|
Line 3120 sub currentdump {
|
if ($rep eq "unknown_cmd") { |
if ($rep eq "unknown_cmd") { |
# an old lond will not know currentdump |
# an old lond will not know currentdump |
# Do a dump and make it look like a currentdump |
# Do a dump and make it look like a currentdump |
my @tmp = &dump($courseid,$sdom,$sname,'.'); |
my @tmp = &dumpstore($courseid,$sdom,$sname,'.'); |
return if ($tmp[0] =~ /^(error:|no_such_host)/); |
return if ($tmp[0] =~ /^(error:|no_such_host)/); |
my %hash = @tmp; |
my %hash = @tmp; |
@tmp=(); |
@tmp=(); |
Line 3107 sub convert_dump_to_currentdump{
|
Line 3145 sub convert_dump_to_currentdump{
|
# we might run in to problems with parameter names =~ /^v\./ |
# we might run in to problems with parameter names =~ /^v\./ |
while (my ($key,$value) = each(%hash)) { |
while (my ($key,$value) = each(%hash)) { |
my ($v,$symb,$param) = split(/:/,$key); |
my ($v,$symb,$param) = split(/:/,$key); |
|
$symb = &unescape($symb); |
|
$param = &unescape($param); |
next if ($v eq 'version' || $symb eq 'keys'); |
next if ($v eq 'version' || $symb eq 'keys'); |
next if (exists($returnhash{$symb}) && |
next if (exists($returnhash{$symb}) && |
exists($returnhash{$symb}->{$param}) && |
exists($returnhash{$symb}->{$param}) && |
Line 3544 sub is_portfolio_url {
|
Line 3584 sub is_portfolio_url {
|
|
|
sub is_portfolio_file { |
sub is_portfolio_file { |
my ($file) = @_; |
my ($file) = @_; |
if (($file =~ /^portfolio/) || ($file =~ /^groups\/\w\/portfolio/)) { |
if (($file =~ /^portfolio/) || ($file =~ /^groups\/\w+\/portfolio/)) { |
return 1; |
return 1; |
} |
} |
return; |
return; |
Line 3556 sub is_portfolio_file {
|
Line 3596 sub is_portfolio_file {
|
sub customaccess { |
sub customaccess { |
my ($priv,$uri)=@_; |
my ($priv,$uri)=@_; |
my ($urole,$urealm)=split(/\./,$env{'request.role'},2); |
my ($urole,$urealm)=split(/\./,$env{'request.role'},2); |
my ($udom,$ucrs,$usec)=split(/\//,$urealm); |
my (undef,$udom,$ucrs,$usec)=split(/\//,$urealm); |
$udom = &LONCAPA::clean_domain($udom); |
$udom = &LONCAPA::clean_domain($udom); |
$ucrs = &LONCAPA::clean_username($ucrs); |
$ucrs = &LONCAPA::clean_username($ucrs); |
my $access=0; |
my $access=0; |
Line 4096 sub log_query {
|
Line 4136 sub log_query {
|
return get_query_reply($queryid); |
return get_query_reply($queryid); |
} |
} |
|
|
|
# -------------------------- Update MySQL table for portfolio file |
|
|
|
sub update_portfolio_table { |
|
my ($uname,$udom,$file_name,$query,$group,$action) = @_; |
|
my $homeserver = &homeserver($uname,$udom); |
|
my $queryid= |
|
&reply("querysend:".$query.':'.&escape($uname.':'.$udom.':'.$group). |
|
':'.&escape($file_name).':'.$action,$homeserver); |
|
my $reply = &get_query_reply($queryid); |
|
return $reply; |
|
} |
|
|
# ------- Request retrieval of institutional classlists for course(s) |
# ------- Request retrieval of institutional classlists for course(s) |
|
|
sub fetch_enrollment_query { |
sub fetch_enrollment_query { |
Line 5259 sub modify_access_controls {
|
Line 5311 sub modify_access_controls {
|
# remove lock |
# remove lock |
my @del_lock = ($file_name."\0".'locked_access_records'); |
my @del_lock = ($file_name."\0".'locked_access_records'); |
my $dellockoutcome = &del('file_permissions',\@del_lock,$domain,$user); |
my $dellockoutcome = &del('file_permissions',\@del_lock,$domain,$user); |
|
my ($file,$group); |
|
if (&is_course($domain,$user)) { |
|
($group,$file) = split(/\//,$file_name,2); |
|
} else { |
|
$file = $file_name; |
|
} |
|
my $sqlresult = |
|
&update_portfolio_table($user,$domain,$file,'portfolio_access', |
|
$group); |
} else { |
} else { |
$outcome = "error: could not obtain lockfile\n"; |
$outcome = "error: could not obtain lockfile\n"; |
} |
} |