webgui/docs/upgrades/upgrade_7.8.13-7.9.0.pl
2010-03-09 21:07:13 -08:00

238 lines
12 KiB
Perl

#!/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.0";
my $quiet;
my $session = start();
# upgrade functions go here
removeBadMacroEntries($session);
addFilePumpMacro($session);
fixImportNodeSettings($session);
finish($session);
#----------------------------------------------------------------------------
# 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;
#}
#----------------------------------------------------------------------------
# Describe what our function does
sub removeBadMacroEntries {
my $session = shift;
print "\tRemove bad macro entries that look like perl memory locations... " unless $quiet;
my $macros = $session->config->get('macros');
# and here's our code
foreach my $macroName (keys %{ $macros }) {
delete $macros->{$macroName} if $macroName =~ /HASH \( 0x \w+ \)/ox;
}
$session->config->set('macros', $macros);
print "DONE!\n" unless $quiet;
}
#----------------------------------------------------------------------------
# Describe what our function does
sub addFilePumpMacro {
my $session = shift;
print "\tAdd the FilePump macro... " unless $quiet;
# and here's our code
$session->config->addToHash('macros', 'FilePump' => 'FilePump');
print "DONE!\n" unless $quiet;
}
#----------------------------------------------------------------------------
# Describe what our function does
sub fixImportNodeSettings {
my $session = shift;
print "\tFix settings in the import node... " unless $quiet;
# and here's our code
my $db = $session->db;
$db->write('update template set isDefault=0');
my @templateIds = qw/
-ANLpoTEP-n4POAdRxCzRw PBtmpl0000000000000092 N716tpSna0iIQTKxS4gTWA VCFhB9WOsDsH2Apj3c6DpQ
-PkdI8l1idu-8gDX3iOdcw PBtmpl0000000000000093 NBVSVNLp9X_bV7WrCprtCA WVtmpl0000000000000001
-zxyB-O50W8YnL39Ouoc4Q PBtmpl0000000000000094 OOyMH33plAy6oCj_QWrxtg WeatherDataTmpl0000001
05FpjceLYhq4csF1Kww1KQ PBtmpl0000000000000097 OkphOEdaSGTXnFGhK4GT5A WikiFrontTmpl000000001
0EAJ9EYb9ap2XwfrcXfdLQ PBtmpl0000000000000098 OxJWQgnGsgyGohP2L3zJPQ WikiKeyword00000000001
0X4Q3tBWUb_thsVbsYz9xQ PBtmpl0000000000000099 PBEmsBadgeTemplate0000 WikiMPTmpl000000000001
0n4HtbXaWa_XJHkFjetnLQ PBtmpl0000000000000101 PBnav00000000000bullet WikiPHTmpl000000000001
1IzRpX0tgW7iuCfaU2Kk0A PBtmpl0000000000000103 PBnav00000000indentnav WikiPageEditTmpl000001
1Q4Je3hKCJzeo0ZBB5YB8g PBtmpl0000000000000104 PBnav000000style01lvl2 WikiPageTmpl0000000001
1Yn_zE_dSiNuaBGNLPbxtw PBtmpl0000000000000107 PBtmpl0000000000000001 WikiRCTmpl000000000001
1oBRscNIcFOI-pETrCOspA PBtmpl0000000000000108 PBtmpl0000000000000002 WikiSearchTmpl00000001
2CS-BErrjMmESOtGT90qOg PBtmpl0000000000000109 PBtmpl0000000000000004 XNd7a_g_cTvJVYrVHcx2Mw
2GxjjkRuRkdUg_PccRPjpA PBtmpl0000000000000111 PBtmpl0000000000000005 XdlKhCDvArs40uqBhvzR3w
2gtFt7c0qAFNU3BG_uvNvg PBtmpl0000000000000112 PBtmpl0000000000000006 XgcsoDrbC0duVla7N7JAdw
2rC4ErZ3c77OJzJm7O5s3w PBtmpl0000000000000113 PBtmpl0000000000000010 YP9WaMPJHvCJl-YwrLVcPw
3QpYtHrq_jmAk1FNutQM5A PBtmpl0000000000000114 PBtmpl0000000000000011 ZipArchiveTMPL00000001
3rjnBVJRO6ZSkxlFkYh_ug PBtmpl0000000000000115 PBtmpl0000000000000012 _aE16Rr1-bXBf8SIaLZjCg
3womoo7Teyy2YKFa25-MZg PBtmpl0000000000000116 PBtmpl0000000000000013 aIpCmr9Hi__vgdZnDTz1jw
4Ekp0kJoJllRRRo_J1Rj6w PBtmpl0000000000000117 PBtmpl0000000000000014 aUDsJ-vB9RgP-AYvPOy8FQ
5A8Hd9zXvByTDy4x-H28qw PBtmpl0000000000000121 PBtmpl0000000000000015 alraubvBu-YJJ614jAHD5w
63ix2-hU0FchXGIWkG3tow PBtmpl0000000000000122 PBtmpl0000000000000016 azCqD0IjdQSlM3ar29k5Sg
64tqS80D53Z0JoAs2cX2VQ PBtmpl0000000000000123 PBtmpl0000000000000020 b1316COmd9xRv4fCI3LLGA
6X-7Twabn5KKO_AbgK3PEw PBtmpl0000000000000124 PBtmpl0000000000000021 b4n3VyUIsAHyIvT-W-jziA
6uQEULvXFgCYlRWnYzZsuA PBtmpl0000000000000128 PBtmpl0000000000000024 bPz1yk6Y9uwMDMBcmMsSCg
75CmQgpcCSkdsL-oawdn3Q PBtmpl0000000000000130 PBtmpl0000000000000026 c8xrwVuu5QE0XtF9DiVzLw
7F-BuEHi7t9bPi008H8xZQ PBtmpl0000000000000131 PBtmpl0000000000000027 cR0UFm7I1qUI2Wbpj--08Q
7Ijdd8SW32lVgg2H8R-Aqw PBtmpl0000000000000132 PBtmpl0000000000000029 d8jMMMRddSQ7twP4l1ZSIw
7JCTAiu1U_bT9ldr655Blw PBtmpl0000000000000133 PBtmpl0000000000000031 default_post_received1
8tqyQx-LwYUHIWOlKPjJrA PBtmpl0000000000000134 PBtmpl0000000000000032 eqb9sWjFEVq0yHunGV8IGw
9ThW278DWLV0-Svf68ljFQ PBtmpl0000000000000135 PBtmpl0000000000000033 g8W53Pd71uHB9pxaXhWf_A
9j0_Z1j3Jd0QBbY2akb6qw PBtmpl0000000000000136 PBtmpl0000000000000036 gfZOwaTWYjbSoVaQtHBBEw
A16v-YjWAShXWvSACsraeg PBtmpl0000000000000137 PBtmpl0000000000000037 h_T2xtOxGRQ9QJOR6ebLpQ
AGJBGviWGAwjnwziiPjvDg PBtmpl0000000000000140 PBtmpl0000000000000038 hreA_bgxiTX-EzWCSZCZJw
AZFU33p0jpPJ-E6qLSWZng PBtmpl0000000000000141 PBtmpl0000000000000039 i9-G00ALhJOr0gMh-vHbKA
AjhlNO3wZvN5k4i4qioWcg PBtmpl0000000000000200 PBtmpl0000000000000040 ilu5BrM-VGaOsec9Lm7M6Q
AldPGu0u-jm_5xK13atCSQ PBtmpl0000000000000208 PBtmpl0000000000000041 itransact_credentials1
BMybD3cEnmXVk2wQ_qEsRQ PBtmpl0000000000000209 PBtmpl0000000000000042 jME5BEDYVDlBZ8jIQA9-jQ
CalendarDay00000000001 PBtmpl0000000000000210 PBtmpl0000000000000043 kj3b-X3i6zRKnhLb4ZiCLw
CalendarEvent000000001 PBtmplBlankStyle000001 PBtmpl0000000000000044 ktSvKU8riGimhcsxXwqvPQ
CalendarEventEdit00001 PBtmplHelp000000000001 PBtmpl0000000000000045 lG2exkH9FeYvn4pA63idNg
CalendarMonth000000001 ProjectManagerTMPL0001 PBtmpl0000000000000047 limMkk80fMB3fqNZVf162w
CalendarPrintDay000001 ProjectManagerTMPL0002 PBtmpl0000000000000053 m3IbBavqzuKDd2PGGhKPlA
CalendarPrintEvent0001 ProjectManagerTMPL0003 PBtmpl0000000000000054 mM3bjP_iG9sv5nQb4S17tQ
CalendarPrintMonth0001 ProjectManagerTMPL0004 PBtmpl0000000000000055 mRtqRuVikSe82BQsYBlD0A
CalendarPrintWeek00001 ProjectManagerTMPL0005 PBtmpl0000000000000056 matrixtmpl000000000001
CalendarSearch00000001 ProjectManagerTMPL0006 PBtmpl0000000000000057 matrixtmpl000000000002
CalendarWeek0000000001 PsFn7dJt4wMwBa8hiE3hOA PBtmpl0000000000000059 matrixtmpl000000000003
CarouselTmpl0000000001 S2_LsvVa95OSqc66ITAoig PBtmpl0000000000000060 matrixtmpl000000000004
CarouselTmpl0000000002 S3zpVitAmhy58CAioH359Q PBtmpl0000000000000061 matrixtmpl000000000005
CxMpE_UPauZA3p8jdrOABw SQLReportDownload00001 PBtmpl0000000000000062 matrixtmpl000000000006
D6cJpRcey35aSkh9Q_FPUQ SVIhz68689hwUGgcDM-gWw PBtmpl0000000000000063 matrixtmpl000000000007
DUoxlTBXhVS-Zl3CFDpt9g StockDataTMPL000000001 PBtmpl0000000000000065 nFen0xjkZn8WkpM93C9ceQ
DashboardViewTmpl00001 StockDataTMPL000000002 PBtmpl0000000000000066 nWNVoMLrMo059mDRmfOp9g
DoVNijm6lMDE0cYrtvEbDQ TEId5V-jEvUULsZA0wuRuA PBtmpl0000000000000067 newsletter000000000001
E3tzZjzhmYoNlAyP2VW33Q TKmhv8boP3TD2xwSwUBq0g PBtmpl0000000000000068 newslettercs0000000001
EBlxJpZQ9o-8VBOaGQbChA TbDcVLbbznPi0I0rxQf2CQ PBtmpl0000000000000077 newslettersubscrip0001
ErEzulFiEKDkaCDVmxUavw ThingyTmpl000000000001 PBtmpl0000000000000078 oHh0UqAJeY7u2n--WD-BAA
ExpireIncResptmpl00001 ThingyTmpl000000000002 PBtmpl0000000000000079 ohjyzab5i-yW6GOWTeDUHg
FJbUTvZ2nUTn65LpW6gjsA ThingyTmpl000000000003 PBtmpl0000000000000080 pbtmpl0000000000000220
G5V6neXIDiFXN05oL-U3AQ ThingyTmpl000000000004 PBtmpl0000000000000081 pbtmpl0000000000000221
GNvjCFQWjY2AF2uf0aCM8Q TimeTrackingTMPL000001 PBtmpl0000000000000082 q5O62aH4pjUXsrQR3Pq4lw
GRUNFctldUgop-qRLuo_DA TimeTrackingTMPL000002 PBtmpl0000000000000083 stevecoolmenu000000001
IOB0000000000000000001 TimeTrackingTMPL000003 PBtmpl0000000000000085 stevenav00000000000001
IOB0000000000000000002 TuYPpHx7TUyk08639Pc8Bg PBtmpl0000000000000088 stevestyle000000000001
K8F0j_cq_jgo8dvWY_26Ag UTNFeV7B_aSCRmmaFCq4Vw PBtmpl0000000000000091 stevestyle000000000002
KAMdiUdJykjN02CPHpyZOw UserListTmpl0000000001 wAc4azJViVTpo-2NYOXWvg stevestyle000000000003
MBmWlA_YEA2I6D29OMGtRg UserListTmpl0000000002 yBwydfooiLvhEFawJb0VTQ u9vfx33XDk5la1-QC5FK7g
MK4fCNoyrx5SE8eyDfOpxg UserListTmpl0000000003 yxD5ka7XHebPLD-LXBwJqw uRL9qtk7Rb0YRJ41LmHOJw
MultiSearchTmpl0000001 VBkY05f-E3WJS50WpdKd1Q zcX-wIUct0S_np14xxOA-A vrKXEtluIhbmAS9xmPukDA
zrNpGbT3odfIkg6nFSUy8Q
/;
my $tmplSth = $db->prepare('update template set isDefault=1 where assetId=?');
foreach my $templateId (@templateIds) {
$tmplSth->execute([$templateId]);
}
$tmplSth->finish;
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;
# 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