From 3b7e401e9540105ecc65445a0629ab3c39657b5f Mon Sep 17 00:00:00 2001 From: JT Smith Date: Wed, 15 Sep 2004 21:47:00 +0000 Subject: [PATCH] several bug fixes --- docs/changelog/6.x.x.txt | 9 ++++++-- lib/WebGUI/Attachment.pm | 42 +++++++++++++++++++---------------- lib/WebGUI/ErrorHandler.pm | 1 + lib/WebGUI/Operation/Theme.pm | 15 +++++++------ lib/WebGUI/Page.pm | 2 ++ 5 files changed, 41 insertions(+), 28 deletions(-) diff --git a/docs/changelog/6.x.x.txt b/docs/changelog/6.x.x.txt index 0eb7e67fb..cd9533c37 100644 --- a/docs/changelog/6.x.x.txt +++ b/docs/changelog/6.x.x.txt @@ -6,13 +6,18 @@ - bugfix [ 1028561 ] Manage Users - Next Page Link Broken - bugfix [ 1028494 ] Folder not shown in Manage Collateral - bugfix [ 1028446 ] Can't copy Navigation + - bugfix [ 1027705 ] %row in sub self_and_sisters should be case-insensitive + (Yary Hluchan). + - bugfix [ 1027834 ] Theme Importer fails due to getNextId + - bugfix [ 1027698 ] Attatchment::saveFromFilesystem fails when 1st arg is a + dir (Yary Hluchan) + - bugfix [ 1027684 ] cp silent failure in Attatchment.pm (Yary Hluchan) + - bugfix [ 1027681 ] Some warnings hard to track down (Yary Hluchan) 6.2.2 - Made a dramatic performance enhancement to the page tree system by restructuring an overused, and inefficent method. - - Added a gotcha warning about setting the TZ environment variable on Windows - systems. - bugfix [1024275]. Drag and drop not working (Leendert Bottelberghs). - bugfix [ 1025671 ] Crash on manage page tree. (Leendert Bottelberghs) - bugfix [ 1025271 ] Cut page not working. (Leendert Bottelberghs) diff --git a/lib/WebGUI/Attachment.pm b/lib/WebGUI/Attachment.pm index e73b528e5..73fac3d21 100644 --- a/lib/WebGUI/Attachment.pm +++ b/lib/WebGUI/Attachment.pm @@ -145,7 +145,7 @@ sub copy { $b = FileHandle->new(">".$newNode->getPath.$session{os}{slash}.'thumb-'.$_[0]->getFilename); if (defined $b) { binmode($b); - cp($a,$b); + cp($a,$b) or WebGUI::ErrorHandler::warn("Couldn't copy thumbnail: ".)$newNode->getPath.$session{os}{slash}.'thumb-'.$_[0]->getFilename." :".$!); $b->close; } $a->close; @@ -613,25 +613,29 @@ sub saveFromFilesystem { } $_[0]->{_filename} = WebGUI::URL::makeCompliant($_[0]->getFilename); $_[0]->getNode->create(); - $a = FileHandle->new($_[1],"r"); - if (defined $a) { - binmode($a); - $b = FileHandle->new(">".$_[0]->getPath); - if (defined $b) { - binmode($b); - cp($a,$b); - $b->close; - $_[0]->createThumbnail($_[2]); - $_[0]->resizeImage($_[3]); - } else { - WebGUI::ErrorHandler::warn("Couldn't open file ".$_[0]->getPath." for writing due to error: ".$!); - $_[0]->{_filename} = ""; - } - $a->close; + if (-d $_[1]) { + WebGUI::ErrorHandler::warn($_[1]." is a directory, not a file."); } else { - WebGUI::ErrorHandler::warn("Couldn't open file ".$_[1]." for reading due to error: ".$!); - $_[0]->{_filename} = ""; - } + $a = FileHandle->new($_[1],"r"); + if (defined $a) { + binmode($a); + $b = FileHandle->new(">".$_[0]->getPath); + if (defined $b) { + binmode($b); + cp($a,$b) or WebGUI::ErrorHandler::warn("Couldn't copy $_[1] to ".$_[0]->getPath.": $!");; + $b->close; + $_[0]->createThumbnail($_[2]); + $_[0]->resizeImage($_[3]); + } else { + WebGUI::ErrorHandler::warn("Couldn't open file ".$_[0]->getPath." for writing due to error: ".$!); + $_[0]->{_filename} = ""; + } + $a->close; + } else { + WebGUI::ErrorHandler::warn("Couldn't open file ".$_[1]." for reading due to error: ".$!); + $_[0]->{_filename} = ""; + } + } } else { $_[0]->{_filename} = ""; } diff --git a/lib/WebGUI/ErrorHandler.pm b/lib/WebGUI/ErrorHandler.pm index c2df2a598..dab99a9cc 100644 --- a/lib/WebGUI/ErrorHandler.pm +++ b/lib/WebGUI/ErrorHandler.pm @@ -376,6 +376,7 @@ The message you wish to write to the log. sub writeLog { if (my $log = FileHandle->new(">>".$WebGUI::Session::session{config}{logfile})) { print $log $_[0]; + printf $log '%s:%d (sub %s) ',(caller(2))[1,2,3]; $log->close; } else { use CGI; diff --git a/lib/WebGUI/Operation/Theme.pm b/lib/WebGUI/Operation/Theme.pm index beb7c51db..783a05469 100644 --- a/lib/WebGUI/Operation/Theme.pm +++ b/lib/WebGUI/Operation/Theme.pm @@ -20,6 +20,7 @@ use WebGUI::Grouping; use WebGUI::HTMLForm; use WebGUI::HTTP; use WebGUI::Icon; +use WebGUI::Id; use WebGUI::International; use WebGUI::Node; use WebGUI::Operation::Shared; @@ -111,7 +112,7 @@ sub www_addThemeComponentSave { $id =~ /^(.*?)\_(.*)/; my $type = $1; $id = $2; - my $componentId = getNextId("themeComponentId"); + my $componentId = WebGUI::Id::generate(); WebGUI::SQL->write("insert into themeComponent (themeId,themeComponentId,type,id) values ($session{form}{themeId}, $componentId, ".quote($type).", ".quote($id).")"); } @@ -245,7 +246,7 @@ sub www_editTheme { sub www_editThemeSave { return WebGUI::Privilege::insufficient unless (WebGUI::Grouping::isInGroup(9)); if ($session{form}{themeId} eq "new") { - $session{form}{themeId} = getNextId("themeId"); + $session{form}{themeId} = WebGUI::Id::generate(); WebGUI::SQL->write("insert into theme (themeId,webguiVersion,original,versionNumber) values ($session{form}{themeId},".quote($WebGUI::VERSION).",1,0)"); } @@ -385,17 +386,17 @@ sub www_importThemeSave { return WebGUI::Privilege::insufficient unless (WebGUI::Grouping::isInGroup(9)); my $propertiesFile = WebGUI::Attachment->new("_theme.properties","temp",$session{form}{extractionPoint}); my $theme = $propertiesFile->getHashref; - my $themeId = getNextId("themeId"); + my $themeId = WebGUI::Id::generate(); WebGUI::SQL->write("insert into theme (themeId,name,designer,designerURL,webguiVersion,versionNumber,original) values ($themeId, ".quote($theme->{name}).", ".quote($theme->{designer}).", ".quote($theme->{designerURL}) .", ".quote($theme->{webguiVersion}).", $theme->{versionNumber}, 0)"); - my $collateralFolderId = getNextId("collateralFolderId"); + my $collateralFolderId = WebGUI::Id::generate(); WebGUI::SQL->write("insert into collateralFolder (collateralFolderId,name,parentId) values ($collateralFolderId, ".quote($theme->{name}).", 0)"); foreach my $key (keys %{$theme->{components}}) { my $type = $theme->{components}{$key}{type}; if ($type eq "template") { - $theme->{components}{$key}{properties}{$type."Id"} = getNextId($type."Id"); + $theme->{components}{$key}{properties}{$type."Id"} = WebGUI::Id::generate(); my (@fields, @values); foreach my $property (keys %{$theme->{components}{$key}{properties}}) { push(@fields,$property); @@ -405,7 +406,7 @@ sub www_importThemeSave { my $id = $theme->{components}{$key}{properties}{$type."Id"}; $id .= "_".$theme->{components}{$key}{properties}{namespace} if ($type eq "template"); WebGUI::SQL->write("insert into themeComponent (themeId,themeComponentId,type,id) - values ($themeId, ".getNextId("themeComponentId").", ".quote($type).", ".quote($id).")"); + values ($themeId, ".WebGUI::Id::generate().", ".quote($type).", ".quote($id).")"); } elsif (isIn($type, qw(image file snippet))) { $theme->{components}{$key}{properties}{collateralFolderId} = $collateralFolderId; my $c = WebGUI::Collateral->new("new"); @@ -413,7 +414,7 @@ sub www_importThemeSave { $c->saveFromFilesystem($propertiesFile->getNode->getPath.$session{os}{slash} .$theme->{components}{$key}{properties}{filename}); WebGUI::SQL->write("insert into themeComponent (themeId,themeComponentId,type,id) - values ($themeId, ".getNextId("themeComponentId").", ".quote($type).", " + values ($themeId, ".WebGUI::Id::generate().", ".quote($type).", " .quote($c->get("collateralId")).")"); } } diff --git a/lib/WebGUI/Page.pm b/lib/WebGUI/Page.pm index ea47552f5..1e780e16c 100644 --- a/lib/WebGUI/Page.pm +++ b/lib/WebGUI/Page.pm @@ -17,6 +17,7 @@ package WebGUI::Page; use HTML::Template; use strict; use Tie::IxHash; +use Tie::CPHash; use WebGUI::Cache; use WebGUI::DateTime; use WebGUI::ErrorHandler; @@ -1417,6 +1418,7 @@ Returns an array of hashrefs containing the page properties of this node and it' sub self_and_sisters { my ($self, $sth, %row, @result); $self = shift; + tie %row,'Tie::CPHash'; $sth = WebGUI::SQL->read( "select a.* from page as a,