Skip to content

Commit

Permalink
Merge commit 'f2e0fb509a2ef45c200945ed1ea2e9046d900704' into WebGUI8.…
Browse files Browse the repository at this point in the history
… Some tests still failing.
  • Loading branch information
perlDreamer committed Jun 28, 2010
2 parents e5b82bc + f2e0fb5 commit 385931a
Show file tree
Hide file tree
Showing 92 changed files with 1,966 additions and 650 deletions.
21 changes: 21 additions & 0 deletions docs/changelog/7.x.x.txt
@@ -1,3 +1,24 @@
7.9.6
- new checkbox in the asset manager for clearing the package flag on import
- fixed #11597: manageTrash and newlines
- fixed #11577: Gallery Album: "Sort by" radio list missing in "Add Archive" view
- fixed #11576: Default WebGUI config has a bad macro
- fixed #11578: Collaboration System: add edit stamp uses wrong user
- added #9774: More owner information in the gallery
- fixed #11581: Calendar problems
- fixed #11583: EMS: Tokens do not follow their permissions
- fixed #11584: Errors on checkout when payment problems occur
- fixed #11582: Registering with a .mobi email address
- fixed #11580: Date not populated for Story Archive RSS feed
- fixed #11587: Thingy, no fields and undefined statement handles
- fixed #11589: Syndicated Content: Return raw text for sentence and word template variables
- fixed #11573: user has no way of knowing what they are currently using
- fixed #11603: Shelf, template variables for sub shelves
- added #11504: Allow search by location in the gallery
- migrate to getLineageIterator to save memory
- add findBrokenAssets.pl to find and fix/delete broken assets
- change to use weaken() to save memory

7.9.5
- Asset->www_copy now has a progress bar
- fixed #11556: New cart doesn't work with other forms on the same page
Expand Down
18 changes: 9 additions & 9 deletions docs/create.sql

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions docs/gotcha.txt
Expand Up @@ -17,6 +17,12 @@ save you many hours of grief.
- Moose
- CHI


7.9.6
--------------------------------------------------------------------
* The javascript check for email addresses has been removed.


7.9.5
--------------------------------------------------------------------
* Starting in WebGUI 7.9.4, the CHI and Cache::FastMmap modules are required.
Expand Down
33 changes: 18 additions & 15 deletions docs/previousVersion.sql

Large diffs are not rendered by default.

Binary file not shown.
Binary file not shown.
Binary file not shown.
161 changes: 161 additions & 0 deletions docs/upgrades/upgrade_7.9.5-7.9.6.pl
@@ -0,0 +1,161 @@
#!/usr/bin/env perl

#-------------------------------------------------------------------
# WebGUI is Copyright 2001-2009 Plain Black Corporation.
#-------------------------------------------------------------------
# Please read the legal notices (docs/legal.txt) and the license
# (docs/license.txt) that came with this distribution before using
# this software.
#-------------------------------------------------------------------
# http://www.plainblack.com info@plainblack.com
#-------------------------------------------------------------------

our ($webguiRoot);

BEGIN {
$webguiRoot = "../..";
unshift (@INC, $webguiRoot."/lib");
}

use strict;
use Getopt::Long;
use WebGUI::Session;
use WebGUI::Storage;
use WebGUI::Asset;


my $toVersion = '7.9.6';
my $quiet; # this line required


my $session = start(); # this line required

# upgrade functions go here
fixConvertUTCMacroName($session);
dropOldEMSTableColumn($session);
addIndexForInbox($session);

finish($session); # this line required


#----------------------------------------------------------------------------
# Describe what our function does
#sub exampleFunction {
# my $session = shift;
# print "\tWe're doing some stuff here that you should know about... " unless $quiet;
# # and here's our code
# print "DONE!\n" unless $quiet;
#}

#----------------------------------------------------------------------------
# Add keys and indicies to groupGroupings to help speed up group queries
sub addIndexForInbox {
my $session = shift;
print "\tAdding index to inbox_messageState... " unless $quiet;
my $sth = $session->db->read('show create table inbox_messageState');
my ($field,$stmt) = $sth->array;
$sth->finish;
unless ($stmt =~ m/KEY `userId_deleted_isRead`/i) {
$session->db->write("alter table inbox_messageState add index userId_deleted_isRead (userId,deleted,isRead)");
}
print "DONE!\n" unless $quiet;
}

#----------------------------------------------------------------------------
# Describe what our function does
sub fixConvertUTCMacroName {
my $session = shift;
print "\tFix the name of the ConvertUTCToTZ macro in the config file... " unless $quiet;
$session->config->deleteFromHash('macros', 'ConvertToUTC');
$session->config->addToHash('macros', 'ConvertUTCToTZ', 'ConvertUTCToTZ');
# and here's our code
print "DONE!\n" unless $quiet;
}

#----------------------------------------------------------------------------
# Describe what our function does
sub dropOldEMSTableColumn {
my $session = shift;
print "\tDrop an old column from the EventMangementSystem table that is no longer used... " unless $quiet;
$session->db->write(q|ALTER TABLE EventManagementSystem DROP COLUMN groupToApproveEvents|);
# and here's our code
print "DONE!\n" unless $quiet;
}


# -------------- DO NOT EDIT BELOW THIS LINE --------------------------------

#----------------------------------------------------------------------------
# Add a package to the import node
sub addPackage {
my $session = shift;
my $file = shift;

print "\tUpgrading package $file\n" unless $quiet;
# Make a storage location for the package
my $storage = WebGUI::Storage->createTemp( $session );
$storage->addFileFromFilesystem( $file );

# Import the package into the import node
my $package = eval {
my $node = WebGUI::Asset->getImportNode($session);
$node->importPackage( $storage, {
overwriteLatest => 1,
clearPackageFlag => 1,
setDefaultTemplate => 1,
} );
};

if ($package eq 'corrupt') {
die "Corrupt package found in $file. Stopping upgrade.\n";
}
if ($@ || !defined $package) {
die "Error during package import on $file: $@\nStopping upgrade\n.";
}

return;
}

#-------------------------------------------------
sub start {
my $configFile;
$|=1; #disable output buffering
GetOptions(
'configFile=s'=>\$configFile,
'quiet'=>\$quiet
);
my $session = WebGUI::Session->open($webguiRoot,$configFile);
$session->user({userId=>3});
my $versionTag = WebGUI::VersionTag->getWorking($session);
$versionTag->set({name=>"Upgrade to ".$toVersion});
return $session;
}

#-------------------------------------------------
sub finish {
my $session = shift;
updateTemplates($session);
my $versionTag = WebGUI::VersionTag->getWorking($session);
$versionTag->commit;
$session->db->write("insert into webguiVersion values (".$session->db->quote($toVersion).",'upgrade',".time().")");
$session->close();
}

#-------------------------------------------------
sub updateTemplates {
my $session = shift;
return undef unless (-d "packages-".$toVersion);
print "\tUpdating packages.\n" unless ($quiet);
opendir(DIR,"packages-".$toVersion);
my @files = readdir(DIR);
closedir(DIR);
my $newFolder = undef;
foreach my $file (@files) {
next unless ($file =~ /\.wgpkg$/);
# Fix the filename to include a path
$file = "packages-" . $toVersion . "/" . $file;
addPackage( $session, $file );
}
}

#vim:ft=perl
2 changes: 1 addition & 1 deletion etc/WebGUI.conf.original
Expand Up @@ -808,7 +808,7 @@
"BackToSite" : "BackToSite",
"CanEditText" : "CanEditText",
"CartItemCount" : "CartItemCount",
"ConvertToUTC" : "ConvertToUTC",
"ConvertUTCToTZ" : "ConvertUTCToTZ",
"c" : "c_companyName",
"D" : "D_date",
"DeactivateAccount": "DeactivateAccount",
Expand Down
2 changes: 1 addition & 1 deletion lib/WebGUI/Asset.pm
Expand Up @@ -14,7 +14,7 @@ package WebGUI::Asset;
=cut

use Scalar::Util qw( blessed );
use Scalar::Util qw( blessed weaken );
use Clone qw(clone);
use JSON;
use HTML::Packer;
Expand Down
54 changes: 35 additions & 19 deletions lib/WebGUI/Asset/Event.pm
Expand Up @@ -585,18 +585,20 @@ sub getEventNext {
'assetData.assetId',
);

my $events = $self->getLineage(['siblings'], {
#returnObjects => 1,
my $events = $self->getLineageIterator(['siblings'], {
includeOnlyClasses => ['WebGUI::Asset::Event'],
joinClass => 'WebGUI::Asset::Event',
orderByClause => join(",", @orderByColumns),
whereClause => $where,
limit => 1,
});


return undef unless $events->[0];
return WebGUI::Asset->newById($self->session,$events->[0]);
my $nextEvent;
eval { $nextEvent = $events->() };
if ( WebGUI::Error->caught('WebGUI::Error::ObjecNotFound') ) {
return undef; # Normal error
}
return $nextEvent;
}


Expand Down Expand Up @@ -642,17 +644,20 @@ sub getEventPrev {
'assetData.assetId DESC',
);

my $events = $self->getLineage(['siblings'], {
#returnObjects => 1,
my $events = $self->getLineageIterator(['siblings'], {
includeOnlyClasses => ['WebGUI::Asset::Event'],
joinClass => 'WebGUI::Asset::Event',
orderByClause => join(",",@orderByColumns),
whereClause => $where,
limit => 1,
});

return undef unless $events->[0];
return WebGUI::Asset->newById($self->session,$events->[0]);
my $prevEvent;
eval { $prevEvent = $events->() };
if ( WebGUI::Error->caught( 'WebGUI::Error::ObjectNotFound' ) ) {
return undef; # Normal error
}
return $prevEvent;
}


Expand Down Expand Up @@ -1490,35 +1495,46 @@ override processPropertiesFromFormPost => sub {

# Delete old events
if ($old_id) {
my $events = $self->getLineage(["siblings"], {
returnObjects => 1,
my $events = $self->getLineageIterator(["siblings"], {
includeOnlyClasses => ['WebGUI::Asset::Event'],
joinClass => 'WebGUI::Asset::Event',
whereClause => qq{Event.recurId = "$old_id"},
});
$_->purge for @$events;
while ( 1 ) {
my $event;
eval { $event = $events->() };
if ( my $x = WebGUI::Error->caught('WebGUI::Error::ObjectNotFound') ) {
$session->log->error(sprintf "Couldn't instance event asset %s to delete it", $x->id);
next;
}
last unless $event;
$event->purge;
}
}
}
else {
# TODO: Give users a form property to decide what events to update
# TODO: Make a workflow activity to do this, so that updating
# 1 million events doesn't kill the server.
# TODO: Make this use WebGUI::ProgressBar so 1 million events doesn't kill the server.
# Just update related events
my %properties = %{ $self->get };
delete $properties{startDate};
delete $properties{endDate};
delete $properties{url}; # addRevision will create a new url for us

my $events = $self->getLineage(["siblings"], {
#returnObjects => 1,
my $events = $self->getLineageIterator(["siblings"], {
includeOnlyClasses => ['WebGUI::Asset::Event'],
joinClass => 'WebGUI::Asset::Event',
whereClause => q{Event.recurId = "}.$self->recurId.q{"},
});

for my $eventId (@{$events}) {
my $event = WebGUI::Asset->newById($session, $eventId);

while ( 1 ) {
my $event;
eval { $event = $events->() };
if ( my $x = WebGUI::Error->caught('WebGUI::Error::ObjectNotFound') ) {
$session->log->error(sprintf "Couldn't instance event asset %s to update it", $x->id);
next;
}
last unless $event;
# Add a revision
$properties{ startDate } = $event->startDate;
$properties{ endDate } = $event->endDate;
Expand Down
1 change: 1 addition & 0 deletions lib/WebGUI/Asset/File.pm
Expand Up @@ -371,6 +371,7 @@ around indexContent => sub {
my $self = shift;
my $indexer = $self->$orig(@_);
$indexer->addFile($self->getStorageLocation->getPath($self->filename));
return $indexer;
};


Expand Down
5 changes: 4 additions & 1 deletion lib/WebGUI/Asset/File/GalleryFile.pm
Expand Up @@ -549,7 +549,10 @@ sub getTemplateVars {
$var->{ canComment } = $self->canComment;
$var->{ canEdit } = $self->canEdit;
$var->{ numberOfComments } = scalar @{ $self->getCommentIds };
$var->{ ownerUsername } = $owner->profileField("alias") || $owner->username;
$var->{ ownerUsername } = $owner->get("username");
$var->{ ownerAlias } = $owner->get("alias") || $owner->get("username");
$var->{ ownerId } = $owner->getId;
$var->{ ownerProfileUrl } = $owner->getProfileUrl;
$var->{ url } = $self->getUrl;
$var->{ url_addArchive } = $self->getParent->getUrl('func=addArchive'),
$var->{ url_delete } = $self->getUrl('func=delete');
Expand Down
16 changes: 16 additions & 0 deletions lib/WebGUI/Asset/File/GalleryFile/Photo.pm
Expand Up @@ -349,6 +349,22 @@ sub getThumbnailUrl {
);
}

#-------------------------------------------------------------------

=head2 indexContent ( )
Indexing the content of the Photo. See WebGUI::Asset::indexContent() for
additonal details.
=cut

sub indexContent {
my $self = shift;
my $indexer = $self->SUPER::indexContent;
$indexer->addKeywords($self->get("location"));
return $indexer;
}

#----------------------------------------------------------------------------

=head2 makeResolutions ( [resolutions] )
Expand Down

0 comments on commit 385931a

Please sign in to comment.