diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 25b665245..72e5ac6ba 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -1,4 +1,4 @@ -7.9.14 +7.10.0 7.9.13 - fixed #11783: Instances deleted during realtime run diff --git a/docs/upgrades/packages-7.8.24-7.9.11/merged.wgpkg b/docs/upgrades/packages-7.8.24-7.9.11/merged.wgpkg deleted file mode 100644 index d80cb12f1..000000000 Binary files a/docs/upgrades/packages-7.8.24-7.9.11/merged.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.9.10/data_list.wgpkg b/docs/upgrades/packages-7.9.10/data_list.wgpkg deleted file mode 100644 index 5fb51cfda..000000000 Binary files a/docs/upgrades/packages-7.9.10/data_list.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.9.11/asset_report.wgpkg b/docs/upgrades/packages-7.9.11/asset_report.wgpkg deleted file mode 100644 index 7795f4a50..000000000 Binary files a/docs/upgrades/packages-7.9.11/asset_report.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.9.11/root_import_account_account.css.wgpkg b/docs/upgrades/packages-7.9.11/root_import_account_account.css.wgpkg deleted file mode 100644 index 71916f16d..000000000 Binary files a/docs/upgrades/packages-7.9.11/root_import_account_account.css.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.9.11/root_import_account_default-account-layout2.wgpkg b/docs/upgrades/packages-7.9.11/root_import_account_default-account-layout2.wgpkg deleted file mode 100644 index 4e1c30e28..000000000 Binary files a/docs/upgrades/packages-7.9.11/root_import_account_default-account-layout2.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.9.11/root_import_default-asset-subscription.wgpkg b/docs/upgrades/packages-7.9.11/root_import_default-asset-subscription.wgpkg deleted file mode 100644 index 03f3ad2fc..000000000 Binary files a/docs/upgrades/packages-7.9.11/root_import_default-asset-subscription.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.9.11/root_import_matrix.wgpkg b/docs/upgrades/packages-7.9.11/root_import_matrix.wgpkg deleted file mode 100644 index a100e04c0..000000000 Binary files a/docs/upgrades/packages-7.9.11/root_import_matrix.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.9.13/root_import_gallery-templates.wgpkg b/docs/upgrades/packages-7.9.13/root_import_gallery-templates.wgpkg deleted file mode 100644 index b27227c7c..000000000 Binary files a/docs/upgrades/packages-7.9.13/root_import_gallery-templates.wgpkg and /dev/null differ diff --git a/docs/upgrades/upgrade_7.8.24-7.9.11.pl b/docs/upgrades/upgrade_7.8.24-7.9.11.pl deleted file mode 100644 index e75cfc8bd..000000000 --- a/docs/upgrades/upgrade_7.8.24-7.9.11.pl +++ /dev/null @@ -1,529 +0,0 @@ -#!/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; -use WebGUI::Asset::WikiPage; -use WebGUI::Shop::AddressBook; -use WebGUI::Shop::Pay; -use WebGUI::Workflow; -use WebGUI::Utility; - - -my $toVersion = "7.9.11"; # make this match what version you're going to -my $quiet; # this line required - - -my $session = start(); # this line required - -# upgrade functions go here -##7.9.1-.2 -addSortItemsSCColumn($session); -addExtensionWorkflow($session); - -##7.9.2-.3 -reindexSiteForDefaultSynopsis( $session ); -addTopLevelWikiKeywords( $session ); - -##7.9.3-.4 -addWikiSubKeywords($session); -addSynopsistoEachWikiPage($session); -dropVisitorAddressBooks($session); -alterCartTable($session); -alterAddressBookTable($session); -addWizardHandler( $session ); -addTemplateExampleImage( $session ); -addPayDriverTemplates( $session ); - -##7.9.4-.5 -modifySortItems( $session ); -addRejectNoticeSetting($session); -installNewCSUnsubscribeTemplate($session); - -##7.9.5-.6 -addIndexForInbox($session); - -##7.9.7-.8 -addTwitterAuth( $session ); - -##7.9.8-.9 -migrateAttachmentsToJson( $session ); - -##7.9.9-.10 -alterStoryArchiveTable($session); - -##7.9.10-.11 -alterStoryTopicTable($session); -addAssetReport($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; -#} - - -#---------------------------------------------------------------------------- -sub addExtensionWorkflow { - print "\tAdding calendar event extension to weekly maintenence..." - unless $quiet; - my $workflow = WebGUI::Workflow->new($session, 'pbworkflow000000000002'); - my $activity = $workflow->addActivity('WebGUI::Workflow::Activity::ExtendCalendarRecurrences'); - $activity->set(title => 'Extend Calendar Recurrences'); - $activity->set(description => 'Create events for live recurrences up to two years from the current date'); - print "Done\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addSortItemsSCColumn { - my $session = shift; - print "\tAdding sort items switch to Syndicated Content... " unless $quiet; - - my $sth = $session->db->read('DESCRIBE `SyndicatedContent`'); - while (my ($col) = $sth->array) { - if ($col eq 'sortItems') { - print "Skipped.\n" unless $quiet; - return; - } - } - $session->db->write('ALTER TABLE SyndicatedContent ADD COLUMN sortItems BOOL DEFAULT 1'); - - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addTopLevelWikiKeywords { - my $session = shift; - print "\tAdding top level keywords page to WikiMaster... " unless $quiet; - - my $sth = $session->db->read('DESCRIBE `WikiMaster`'); - while (my ($col) = $sth->array) { - if ($col eq 'topLevelKeywords') { - print "Skipped.\n" unless $quiet; - return; - } - } - $session->db->write('ALTER TABLE WikiMaster ADD COLUMN topLevelKeywords LONGTEXT'); - - print "Done.\n" unless $quiet; -} - - -#---------------------------------------------------------------------------- -# Reindex the site to clear out default synopsis -sub reindexSiteForDefaultSynopsis { - my $session = shift; - print "\tRe-indexing site to clear out default synopses... " unless $quiet; - - my $rs = $session->db->read("select assetId, className from asset where state='published'"); - my @searchableAssetIds; - while (my ($id, $class) = $rs->array) { - my $asset = WebGUI::Asset->new($session,$id,$class); - if (defined $asset && $asset->get("state") eq "published" && ($asset->get("status") eq "approved" || $asset->get("status") eq "archived")) { - $asset->indexContent; - push (@searchableAssetIds, $id); - } - } - - # delete indexes of assets that are no longer searchable - my $list = $session->db->quoteAndJoin(\@searchableAssetIds) if scalar(@searchableAssetIds); - $session->db->write("delete from assetIndex where assetId not in (".$list.")") if $list; - - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -# Add example images to templates -sub addTemplateExampleImage { - my $session = shift; - print "\tAdding example image field to template... " unless $quiet; - - $session->db->write( q{ - ALTER TABLE template ADD storageIdExample CHAR(22) - } ); - - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- - -sub addWizardHandler { - my ( $sesssion ) = @_; - print "\tAdding WebGUI::Wizard... " unless $quiet; - - if ( !grep { $_ eq 'WebGUI::Content::Wizard' } @{$session->config->get('contentHandlers')} ) { - # Find the place of Operation and add before - my @handlers = (); - for my $handler ( @{$session->config->get('contentHandlers')} ) { - if ( $handler eq 'WebGUI::Content::Operation' ) { - push @handlers, 'WebGUI::Content::Wizard'; - } - push @handlers, $handler; - } - $session->config->set('contentHandlers',\@handlers); - } - - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addWikiSubKeywords { - my $session = shift; - print "\tAdd the WikiMaster sub-keywords table... " unless $quiet; - # and here's our code - $session->db->write(<getIsa($session); - PAGE: while (1) { - my $page = eval {$pager->()}; - next PAGE if Exception::Class->caught(); - last PAGE unless $page; - my ($synopsis) = $page->getSynopsisAndContent(undef, $page->get('content')); - $page->update({synopsis => $synopsis}); - } - # and here's our code - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub dropVisitorAddressBooks { - my $session = shift; - print "\tDrop AddressBooks owned by Visitor... " unless $quiet; - my $sth = $session->db->read(q|SELECT addressBookId FROM addressBook where userId='1'|); - BOOK: while (my ($addressBookId) = $sth->array) { - my $book = eval { WebGUI::Shop::AddressBook->new($session, $addressBookId); }; - next BOOK if Exception::Class->caught(); - $book->delete; - } - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub alterAddressBookTable { - my $session = shift; - print "\tDrop sessionId from the Address Book database table... " unless $quiet; - # and here's our code - $session->db->write("ALTER TABLE addressBook DROP COLUMN sessionId"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub alterCartTable { - my $session = shift; - print "\tAdd billing address column to the Cart table... " unless $quiet; - # and here's our code - $session->db->write("ALTER TABLE cart ADD COLUMN billingAddressId CHAR(22)"); - $session->db->write("ALTER TABLE cart ADD COLUMN gatewayId CHAR(22)"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addPayDriverTemplates { - my $session = shift; - print "\tAdd templates to the Payment Drivers that need them... " unless $quiet; - # and here's our code - my $pay = WebGUI::Shop::Pay->new($session); - my @gateways = @{ $pay->getPaymentGateways }; - GATEWAY: foreach my $gateway (@gateways) { - next GATEWAY unless $gateway; - my $properties = $gateway->get; - if ($gateway->isa('WebGUI::Shop::PayDriver::Cash')) { - $properties->{summaryTemplateId} = '30h5rHxzE_Q0CyI3Gg7EJw'; - } - elsif ($gateway->isa('WebGUI::Shop::PayDriver::ITransact')) { - ##Nothing to do. This template was only changed, not added. - } - elsif ($gateway->isa('WebGUI::Shop::PayDriver::Ogone')) { - $properties->{summaryTemplateId} = 'jysVZeUR0Bx2NfrKs5sulg'; - } - elsif ($gateway->isa('WebGUI::Shop::PayDriver::PayPal::PayPalStd')) { - $properties->{summaryTemplateId} = '300AozDaeveAjB_KN0ljlQ'; - } - elsif ($gateway->isa('WebGUI::Shop::PayDriver::PayPal::ExpressCheckout')) { - $properties->{summaryTemplateId} = 'GqnZPB0gLoZmqQzYFaq7bg'; - } - else { - die "Unknown payment driver type found. Unable to automatically upgrade.\n"; - } - $gateway->update($properties); - } - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -# Changes sortItems to a SelectBox -sub modifySortItems { - my $session = shift; - print "\tUpdating SyndicatedContent...\n" unless $quiet; - - require WebGUI::Form::SelectBox; - - print "\t\tModifying table...\n" unless $quiet; - my $type = WebGUI::Form::SelectBox->getDatabaseFieldType; - $session->db->write("ALTER TABLE SyndicatedContent MODIFY sortItems $type"); - - print "\t\tConverting old values..." unless $quiet; - $session->db->write(q{ - UPDATE SyndicatedContent - SET sortItems = 'none' - WHERE sortItems <> '1' - }); - $session->db->write(q{ - UPDATE SyndicatedContent - SET sortItems = 'pubDate_des' - WHERE sortItems = '1' - }); - - # and here's our code - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -# Adds setting which allows users to set whether or not to send reject notices -sub addRejectNoticeSetting { - my $session = shift; - print "\tAdding reject notice setting... " unless $quiet; - $session->setting->add('sendRejectNotice',1); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub installNewCSUnsubscribeTemplate { - my $session = shift; - print "\tAdding new unsubscribe template to the CS... " unless $quiet; - $session->db->write(q|ALTER TABLE Collaboration ADD COLUMN unsubscribeTemplateId CHAR(22) NOT NULL|); - $session->db->write(q|UPDATE Collaboration set unsubscribeTemplateId='default_CS_unsubscribe'|); - 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; -} - -#---------------------------------------------------------------------------- -# Add twitter auth and macro -sub addTwitterAuth { - my $session = shift; - print "\tAdding twitter auth method... " unless $quiet; - - $session->config->addToArray( 'authMethods', 'Twitter' ); - $session->config->addToHash( 'macros', "TwitterLogin" => "TwitterLogin" ); - $session->setting->set( 'twitterEnabled', 0 ); - $session->setting->set( 'twitterTemplateIdChooseUsername', 'mfHGkp6t9gdclmzN33OEnw' ); - - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -# Move Template attachments to JSON collateral -sub migrateAttachmentsToJson { - my $session = shift; - print "\tMoving template attachments to JSON... " unless $quiet; - # and here's our code - $session->db->write( - "ALTER TABLE template ADD attachmentsJson LONGTEXT" - ); - - my $attach; # hashref (template) of hashrefs (revisionDate) - # of arrayrefs (attachments) of hashrefs (attachment) - my $sth = $session->db->read( "SELECT * FROM template_attachments" ); - while ( my $row = $sth->hashRef ) { - push @{ $attach->{ $row->{templateId} }{ $row->{revisionDate} } }, { - url => $row->{url}, - type => $row->{type}, - }; - } - - for my $templateId ( keys %{ $attach } ) { - for my $revisionDate ( keys %{ $attach->{$templateId} } ) { - my $data = $attach->{$templateId}{$revisionDate}; - my $asset = WebGUI::Asset->newByDynamicClass( $session, $templateId, $revisionDate ); - $asset->update({ attachmentsJson => JSON->new->encode( $data ) }); - } - } - - $session->db->write( - "DROP TABLE template_attachments" - ); - - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -# Describe what our function does -sub alterStoryArchiveTable { - my $session = shift; - print "\tAdd story sort order column to the StoryAcrhive table... " unless $quiet; - - my $sth = $session->db->read('DESCRIBE `StoryArchive`'); - while (my ($col) = $sth->array) { - if ($col eq 'storySortOrder') { - print "Skipped.\n" unless $quiet; - return; - } - } - - $session->db->write("ALTER TABLE StoryArchive ADD COLUMN storySortOrder CHAR(22)"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -# Describe what our function does -sub alterStoryTopicTable { - my $session = shift; - print "\tAdd story sort order column to the StoryTopic table... " unless $quiet; - - my $sth = $session->db->read('DESCRIBE `StoryTopic`'); - while (my ($col) = $sth->array) { - if ($col eq 'storySortOrder') { - print "Skipped.\n" unless $quiet; - return; - } - } - - $session->db->write("ALTER TABLE StoryTopic ADD COLUMN storySortOrder CHAR(22)"); - $session->db->write("UPDATE StoryTopic SET storySortOrder = 'Chronologically' WHERE storySortOrder IS NULL"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -# Describe what our function does -sub addAssetReport { - my $session = shift; - print "\tAdding Asset Report Asset ... " unless $quiet; - - #Add the database table - $session->db->write(q{ - CREATE TABLE `AssetReport` ( - `assetId` char(22) character set utf8 collate utf8_bin NOT NULL, - `revisionDate` bigint(20) NOT NULL, - `settings` mediumtext, - `templateId` char(22) character set utf8 collate utf8_bin default NULL, - `paginateAfter` bigint(20) default NULL, - PRIMARY KEY (`assetId`,`revisionDate`) - ) - }); - - #Add the asset to the config file - $session->config->addToHash( "assets", "WebGUI::Asset::Wobject::AssetReport", { category => "utilities" } ); - - 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; - print "\tUpdating packages.\n" unless ($quiet); - addPackage( $session, 'packages-7.8.24-7.9.11/merged.wgpkg' ); -} - -#vim:ft=perl diff --git a/docs/upgrades/upgrade_7.9.13-7.9.14.pl b/docs/upgrades/upgrade_7.9.13-7.9.14.pl deleted file mode 100644 index 976b32980..000000000 --- a/docs/upgrades/upgrade_7.9.13-7.9.14.pl +++ /dev/null @@ -1,123 +0,0 @@ -#!/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.14'; -my $quiet; # this line required - - -my $session = start(); # this line required - -# upgrade functions go here - -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; -#} - - -# -------------- 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