Skip to content
Permalink
Browse files

Merge branch 'master' into WebGUI8.

  • Loading branch information...
perlDreamer committed Jan 19, 2012
2 parents e97d84f + c35b2e5 commit 4ea362ba6feab88519d8ba1e892d4bcd73b36f5b
@@ -1,3 +1,5 @@
7.10.25

7.10.24
- fixed #12318: asset error causes asset manager to fail
- fixed #12308: error message used scalar as reference
Binary file not shown.
Binary file not shown.
Binary file not shown.

This file was deleted.

Oops, something went wrong.
@@ -74,6 +74,7 @@ sub progress {
##Guarantee that we get the most recent revisionDate
my $max_revision = $session->db->prepare('select max(revisionDate) from assetData where assetId=?');

print "Checking all assets\n";
my $count = 1;
my %classTables; # Cache definition lookups
while ( my %row = $sth->hash ) {
@@ -204,6 +205,80 @@ sub progress {
} ## end while ( my %row = $sth->hash)
$sth->finish;
$max_revision->finish;
print "\n";

my $shortcuts = $session->db->quickScalar(q!select count(*) from asset where className='WebGUI::Asset::Shortcut'!);
if ($shortcuts) {
print "Checking for broken shortcuts\n";
my $get_shortcut = WebGUI::Asset::Shortcut->getIsa($session, 0, {returnAll => 1});
$count = 0;
SHORTCUT: while (1) {
my $shortcut = eval { $get_shortcut->() };
if ( $@ || Exception::Class->caught() ) {
##Do nothing, since it would have been caught above
printf "\r%-68s", "No shortcut to check";
}
elsif (!$shortcut) {
last SHORTCUT
}
else {
my $linked_asset = eval { WebGUI::Asset->newPending($session, $shortcut->get('shortcutToAssetId')); };
if ( $@ || Exception::Class->caught() || ! $linked_asset ) {
printf "\r%-68s", "-- Broken shortcut: ".$shortcut->getId.' pointing to '.$shortcut->get('shortcutToAssetId');
if ($delete) {
my $success = $shortcut->purge;
if ($success) {
print "Purged shortcut";
}
else {
print "Could not purge shortcut";
}
}
print "\n";
}
}
progress( $shortcuts, $count++ ) unless $no_progress;
}
progress( $shortcuts, $count ) unless $no_progress;
}

print "\n";

my $file_assets = $session->db->quickScalar(q!select count(*) from asset where className like 'WebGUI::Asset::File%'!);
if ($file_assets) {
print "Checking for broken File Assets\n";
my $get_asset = WebGUI::Asset::File->getIsa($session, 0, {returnAll => 1});
$count = 0;
FILE_ASSET: while (1) {
my $file_asset = eval { $get_asset->() };
if ( $@ || Exception::Class->caught() ) {
##Do nothing, since it would have been caught above
printf "\r%-68s", "No asset to check";
}
elsif (!$file_asset) {
last FILE_ASSET
}
else {
my $storage = $file_asset->getStorageLocation;
my $file = $storage->getPath($file_asset->get('filename'));
if (! -e $file) {
printf "\r%-s", "-- Broken file asset: ".$file_asset->getId." file does not exist: $file";
if ($delete) {
my $success = $file_asset->purge;
if ($success) {
print "Purged File Asset";
}
else {
print "Could not purge File Asset";
}
}
print "\n";
}
}
progress( $file_assets, $count++ ) unless $no_progress;
}
progress( $file_assets, $count ) unless $no_progress;
}

finish($session);
print "\n";
@@ -261,7 +336,20 @@ =head1 SYNOPSIS
=head1 DESCRIPTION
This utility will find any broken assets that cannot be instantiated and are
causing undesired operation of your website.
causing undesired operation of your website. It also checks for these kinds of
semi-working assets and reports them:
=over 4
=item *
Shortcuts pointing to assets that don't exist.
=item *
File assets that have lost their files in the uploads area.
=back
It can also automatically delete them or fix them so you can restore missing data.
@@ -283,7 +371,7 @@ =head1 OPTIONS
=item B<--fix>
Try to fix any corrupted assets.
Try to fix any corrupted assets. The broken Shortcuts and File Assets cannot be fixed.
=item B<--help>

0 comments on commit 4ea362b

Please sign in to comment.
You can’t perform that action at this time.