From a0d2e982bcc945cb169f1fdcaf712c269248fde3 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Tue, 1 Sep 2009 15:53:44 +0000 Subject: [PATCH] Add upgrade path from 7.6.35 to 7.7.17. --- .../packages-7.6.35-7.7.17/merged.wgpkg | Bin 0 -> 168787 bytes docs/upgrades/upgrade_7.6.35-7.7.17.pl | 2029 +++++++++++++++++ 2 files changed, 2029 insertions(+) create mode 100644 docs/upgrades/packages-7.6.35-7.7.17/merged.wgpkg create mode 100644 docs/upgrades/upgrade_7.6.35-7.7.17.pl diff --git a/docs/upgrades/packages-7.6.35-7.7.17/merged.wgpkg b/docs/upgrades/packages-7.6.35-7.7.17/merged.wgpkg new file mode 100644 index 0000000000000000000000000000000000000000..cf7b5f80eb8ca9ccafe688ff74107753e14c8ca7 GIT binary patch literal 168787 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≧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
Efxiua+dC}ECME^UiHa7v^VY(Z^MjLQkBJZ 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 literal 0 HcmV?d00001 diff --git a/docs/upgrades/upgrade_7.6.35-7.7.17.pl b/docs/upgrades/upgrade_7.6.35-7.7.17.pl new file mode 100644 index 000000000..a4f1dbcb6 --- /dev/null +++ b/docs/upgrades/upgrade_7.6.35-7.7.17.pl @@ -0,0 +1,2029 @@ +#!/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 List::MoreUtils qw/uniq/; +use WebGUI::Asset; +use WebGUI::Asset::Template; +use WebGUI::Asset::Wobject::Survey::Test; +use WebGUI::AssetCollateral::Sku::Ad::Ad; +use WebGUI::AssetCollateral::Sku::ThingyRecord::Record; +use WebGUI::FilePump::Bundle; +use WebGUI::International; +use WebGUI::PassiveAnalytics::Rule; +use WebGUI::ProfileField; +use WebGUI::Utility; +use WebGUI::VersionTag; +use WebGUI::Workflow; +use JSON qw/to_json/; + +my $toVersion = "7.7.17"; # make this match what version you're going to +my $quiet; # this line required + + +my $session = start(); # this line required + +############################################################### +## 7.6.14 - 7.7.0 +############################################################### +addAccountActivationTemplateToSettings( $session ); +surveyDoAfterTimeLimit($session); +surveyRemoveResponseTemplate($session); +surveyEndWorkflow($session); +installAssetHistory($session); +addMinimumCartCheckoutSetting( $session ); + +# Passive Analytics +pa_installLoggingTables($session); +pa_installPassiveAnalyticsRule($session); +pa_installPassiveAnalyticsConfig($session); +pa_installWorkflow($session); +pa_addPassiveAnalyticsSettings($session); +pa_addPassiveAnalyticsStatus($session); + +# vendor payouts +addTransactionItemFlags( $session ); +createShopAcccountPluginSettings( $session ); + +############################################################### +## 7.7.0 - 7.7.1 +############################################################### +adSkuInstall($session); +addWelcomeMessageTemplateToSettings( $session ); +removeOldSettings( $session ); + +#add Survey table +addSurveyQuestionTypes($session); + +# image mods +addImageAnnotation($session); + +# rss mods +addRssLimit($session); + +############################################################### +## 7.7.1 - 7.7.2 +############################################################### +addRssFeedAspect($session); +addRssFeedAspectToAssets($session); +convertCollaborationToRssAspect($session); +removeRssCapableAsset($session); + +############################################################### +## 7.7.2 - 7.7.3 +############################################################### +addSurveyQuizModeColumns($session); +addSurveyExpressionEngineConfigFlag($session); +addCarouselWobject($session); +reInstallPassiveAnalyticsConfig($session); + +############################################################### +## 7.7.4 - 7.7.5 +############################################################### +updateSurveyQuestionTypes($session); +installThingyRecord( $session ); +installPluggableTax( $session ); +addSurveyBackButtonColumn( $session ); + +# Story Manager +installStoryManagerTables($session); +sm_upgradeConfigFiles($session); +sm_updateDailyWorkflow($session); +turnOffAdmin($session); + +fixConfigs($session); + +addGlobalHeadTags( $session ); +addShipsSeparateToSku($session); + +addTemplatePacking( $session ); + +############################################################### +## 7.7.5 - 7.7.6 +############################################################### +addTemplateAttachmentsTable($session); +addMobileStyleTemplate( $session ); +revertUsePacked( $session ); +addEuVatDbColumns( $session ); +addShippingDrivers( $session ); +addTransactionTaxColumns( $session ); +sendWebguiStats($session); +addDataFormColumns($session); +addListingsCacheTimeoutToMatrix( $session ); +addSurveyFeedbackTemplateColumn( $session ); +installCopySender($session); +installNotificationsSettings($session); +installSMSUserProfileFields($session); +installSMSSettings($session); +upgradeSMSMailQueue($session); +addPayDrivers($session); +addCollaborationColumns($session); +installSurveyTest($session); +installFriendManagerSettings($session); +installFriendManagerConfig($session); + +############################################################### +## 7.7.6 - 7.7.7 +############################################################### +removeDanglingOldRssAssets( $session ); +addOgoneToConfig( $session ); +addUseEmailAsUsernameToSettings( $session ); +alterVATNumberTable( $session ); +addRedirectAfterLoginUrlToSettings( $session ); +addSurveyTestResultsTemplateColumn( $session ); +updateSurveyTest( $session ); +fixSMSUserProfileI18N($session); +addEmsScheduleColumns ($session); +addMapAsset( $session ); +installFilePumpHandler($session); +installFilePumpTable($session); +installFilePumpAdminGroup($session); +addUserControlWorkflows($session); + +############################################################### +## 7.7.7 - 7.7.8 +############################################################### +addMobileStyleConfig($session); + +############################################################### +## 7.7.9 - 7.7.9 +############################################################### +repackTemplates( $session ); + +############################################################### +## 7.7.9 - 7.7.10 +############################################################### +addStoryPhotoWidth($session); + +############################################################### +## 7.7.10 - 7.7.11 +############################################################### +makeSurveyResponsesVersionAware($session); +shrinkSurveyJSON($session); + +############################################################### +## 7.7.11 - 7.7.12 +############################################################### +surveyCleanUp($session); +addUTCMacro($session); + +############################################################### +## 7.7.14 - 7.7.15 +############################################################### +replacePayPalDriver($session); +addFieldPriceToThingyRecord( $session ); +replaceUsageOfOldTemplates($session); + +############################################################### +## 7.7.15 - 7.7.16 +############################################################### +replaceUsageOfOldTemplatesAgain($session); +updatePayPalDriversAgain($session); +addThingyRecordFieldPriceDefaults($session); + +############################################################### +## 7.7.16 - 7.7.17 +############################################################### +addFriendManagerSettings($session); +fixMapTemplateFolderStyle($session); +addExpireIncompleteSurveyResponsesWorkflow($session); + +finish($session); # this line required + + +#---------------------------------------------------------------------------- +sub addAccountActivationTemplateToSettings { + my $session = shift; + print "\tAdding account activation template to settings... " unless $quiet; + + $session->db->write("insert into settings (name, value) values ('webguiAccountActivationTemplate','PBtmpl0000000000000016')"); + print "Done.\n" unless $quiet; +} + + +#---------------------------------------------------------------------------- +sub surveyDoAfterTimeLimit { + my $session = shift; + print "\tAdding column doAfterTimeLimit to Survey table... " unless $quiet; + $session->db->write('alter table Survey add doAfterTimeLimit char(22)'); + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub surveyEndWorkflow { + my $session = shift; + print "\tAdding column onSurveyEndWorkflowId to Survey table... " unless $quiet; + $session->db->write('alter table Survey add onSurveyEndWorkflowId varchar(22) character set utf8 collate utf8_bin'); + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub surveyRemoveResponseTemplate { + my $session = shift; + print "\tRemoving responseTemplate... " unless $quiet; + $session->db->write('alter table Survey drop responseTemplateId'); + if (my $template = WebGUI::Asset->new($session, 'PBtmpl0000000000000064')) { + $template->purge(); + } + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub installAssetHistory { + my $session = shift; + print "\tAdding Asset History content handler... " unless $quiet; + ##Content Handler + my $contentHandlers = $session->config->get('contentHandlers'); + if (! isIn('WebGUI::Content::AssetHistory', @{ $contentHandlers }) ) { + my @newHandlers = (); + foreach my $handler (@{ $contentHandlers }) { + push @newHandlers, $handler; + push @newHandlers, 'WebGUI::Content::AssetHistory' if + $handler eq 'WebGUI::Content::Account'; + } + $session->config->set('contentHandlers', \@newHandlers); + } + ##Admin Console + $session->config->addToHash('adminConsole', 'assetHistory', { + "icon" => "assetHistory.gif", + "groupSetting" => "groupIdAdminHistory", + "uiLevel" => 5, + "url" => "^PageUrl(\"\",op=assetHistory);", + "title" => "^International(assetHistory,Asset);" + }); + ##Setting for custom group + $session->setting->add('groupIdAdminHistory', 12); + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub pa_installLoggingTables { + my $session = shift; + print "\tInstall logging tables... " unless $quiet; + my $db = $session->db; + $db->write(<write(<write(<write(<write(<write(<crud_createTable($session); + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +# Add the PassiveAnalytics Settings +sub pa_addPassiveAnalyticsSettings { + my $session = shift; + print "\tInstall Passive Analytics settings... " unless $quiet; + # and here's our code + $session->setting->add('passiveAnalyticsInterval', 300); + $session->setting->add('passiveAnalyticsDeleteDelta', 0); + $session->setting->add('passiveAnalyticsEnabled', 0); + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +# Add the PassiveAnalytics Rule table +sub pa_addPassiveAnalyticsStatus { + my $session = shift; + my $db = $session->db; + print "\tInstall Passive Analytics status table... " unless $quiet; + # and here's our code + $db->write(<write(<write('insert into passiveAnalyticsStatus (userId) VALUES (3)'); + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +# Add the Passive Analytics config file entry +# for the adminConsole and the content handler +sub pa_installPassiveAnalyticsConfig { + my $session = shift; + print "\tAdd Passive Analytics entry to the config file... " unless $quiet; + # Admin Bar/Console + my $adminConsole = $session->config->get('adminConsole'); + if (!exists $adminConsole->{'passiveAnalytics'}) { + $adminConsole->{'passiveAnalytics'} = { + "icon" => "passiveAnalytics.png", + "uiLevel" => 1, + "url" => "^PageUrl(\"\",op=passiveAnalytics;func=editRuleflow);", + "title" => "^International(Passive Analytics,PassiveAnalytics);", + "groupSetting" => "3", + }; + $session->config->set('adminConsole', $adminConsole); + } + # Content Handler + my $contentHandlers = $session->config->get('contentHandlers'); + if (!isIn('WebGUI::Content::PassiveAnalytics',@{ $contentHandlers} ) ) { + my $contentIndex = 0; + HANDLER: while ($contentIndex <= $#{ $contentHandlers } ) { + ##Insert before Operation + if($contentHandlers->[$contentIndex] eq 'WebGUI::Content::Operation') { + splice @{ $contentHandlers }, $contentIndex, 0, 'WebGUI::Content::PassiveAnalytics'; + last HANDLER; + } + ++$contentIndex; + } + $session->config->set('contentHandlers', $contentHandlers); + } + # Workflow Activities + my $workflowActivities = $session->config->get('workflowActivities'); + my @none = @{ $workflowActivities->{'None'} }; + if (!isIn('WebGUI::Workflow::Activity::SummarizePassiveAnalytics', @none)) { + push @none, 'WebGUI::Workflow::Activity::SummarizePassiveAnalytics'; + } + if (!isIn('WebGUI::Workflow::Activity::BucketPassiveAnalytics', @none)) { + push @none, 'WebGUI::Workflow::Activity::BucketPassiveAnalytics'; + } + $workflowActivities->{'None'} = [ @none ]; + $session->config->set('workflowActivities', $workflowActivities); + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +# Add the Passive Analytics Workflow +sub pa_installWorkflow { + my $session = shift; + print "\tAdd Passive Analytics Workflow... " unless $quiet; + my $workflow = WebGUI::Workflow->create( + $session, + { + title => 'Analyze Passive Analytics', + mode => 'singleton', + type => 'None', + description => 'Manual changes to this workflow will be lost. Please only use the Passive Analytics screen to make changes', + }, + 'PassiveAnalytics000001', + ); + my $summarize = $workflow->addActivity('WebGUI::Workflow::Activity::SummarizePassiveAnalytics'); + my $bucket = $workflow->addActivity('WebGUI::Workflow::Activity::BucketPassiveAnalytics'); + $summarize->set('title', 'Perform duration analysis'); + $bucket->set( 'title', 'Please log entries into buckets'); + $workflow->set({enabled => 1}); + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addTransactionItemFlags { + my $session = shift; + print "\tAdding columns for vendor payout tracking to transaction items..." unless $quiet; + + $session->db->write('alter table transactionItem add column vendorPayoutStatus char(10) default \'NotPaid\''); + $session->db->write('alter table transactionItem add column vendorPayoutAmount float (6,2) default 0.00'); + + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub createShopAcccountPluginSettings { + my $session = shift; + print "\tCreating default settings for the account plugin..." unless $quiet; + + $session->setting->add('shopMySalesTemplateId', '-zxyB-O50W8YnL39Ouoc4Q'); + + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addMinimumCartCheckoutSetting { + my $session = shift; + print "\tAdding setting for minimum cart checkout..." unless $quiet; + + $session->setting->add( 'shopCartCheckoutMinimum', '0.00' ); + + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +# 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 -------------------------------- +sub removeOldSettings { + my $session = shift; + print "\tRemoving old, unused settings... " unless $quiet; + my $setting = $session->setting; + + $setting->remove('commerceCheckoutCanceledTemplateId'); + $setting->remove('commerceConfirmCheckoutTemplateId'); + $setting->remove('commerceEnableSalesTax'); + $setting->remove('commercePaymentPlugin'); + $setting->remove('commercePurchaseHistoryTemplateId'); + $setting->remove('commerceSelectPaymentGatewayTemplateId'); + $setting->remove('commerceSelectShippingMethodTemplateId'); + $setting->remove('commerceSendDailyReportTo'); + $setting->remove('commerceViewShoppingCartTemplateId'); + + print "Done.\n" unless $quiet; +} + +sub addSurveyQuestionTypes{ + my $session = shift; + print "\tAdding new survey table Survey_questionTypes... " unless $quiet; + $session->db->write(" + CREATE TABLE `Survey_questionTypes` ( + `questionType` varchar(56) NOT NULL, + `answers` text NOT NULL, + PRIMARY KEY (`questionType`)) + "); + $session->db->write(q{ + INSERT INTO `Survey_questionTypes` VALUES ('Scale',''),('Gender','Male,Female'),('Education','Elementary or some high school,High school/GED,Some college/vocational school,College graduate,Some graduate work,Master\\'s degree,Doctorate (of any type),Other degree (verbatim)'),('Importance','Not at all important,,,,,,,,,,Extremely important'),('Yes/No','Yes,No'),('Confidence','Not at all confident,,,,,,,,,,Extremely confident'),('Effectiveness','Not at all effective,,,,,,,,,,Extremely effective'),('Oppose/Support','Strongly oppose,,,,,,Strongly support'),('Certainty','Not at all certain,,,,,,,,,,Extremely certain'),('True/False','True,False'),('Concern','Not at all concerned,,,,,,,,,,Extremely concerned'),('Ideology','Strongly liberal,Liberal,Somewhat liberal,Middle of the road,Slightly conservative,Conservative,Strongly conservative'),('Security','Not at all secure,,,,,,,,,,Extremely secure'),('Risk','No risk,,,,,,,,,,Extreme risk'),('Agree/Disagree','Strongly disagree,,,,,,Strongly agree'),('Race','American Indian,Asian,Black,Hispanic,White non-Hispanic,Something else (verbatim)'),('Threat','No threat,,,,,,,,,,Extreme threat'),('Party','Democratic party,Republican party (or GOP),Independent party,Other party (verbatim)'),('Likelihood','Not at all likely,,,,,,,,,,Extremely likely'),('Multiple Choice',''),('Satisfaction','Not at all satisfied,,,,,,,,,,Extremely satisfied') + }); + print "Done.\n" unless $quiet; +} + +sub addWelcomeMessageTemplateToSettings { + my $session = shift; + print "\tAdding welcome message template to settings... " unless $quiet; + + $session->db->write("insert into settings values ('webguiWelcomeMessageTemplate', 'PBtmpl0000000000000015');"); + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addRssLimit { + my $session = shift; + print "\tAdding rssLimit to RSSCapable table, if needed... " unless $quiet; + my $sth = $session->db->read('describe RSSCapable rssCapableRssLimit'); + if (! defined $sth->hashRef) { + $session->db->write("alter table RSSCapable add column rssCapableRssLimit integer"); + } + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addImageAnnotation { + my $session = shift; + print "\tAdding annotations to ImageAsset table, if needed... " unless $quiet; + my $sth = $session->db->read('describe ImageAsset annotations'); + if (! defined $sth->hashRef) { + $session->db->write("alter table ImageAsset add column annotations mediumtext"); + } + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub adSkuInstall { + my $session = shift; + print "\tInstalling the AdSku Asset...\n" unless $quiet; + print "\t\tCreate AdSku database table.\n" unless $quiet; + $session->db->write("CREATE TABLE AdSku ( + assetId VARCHAR(22) BINARY NOT NULL, + revisionDate BIGINT NOT NULL, + purchaseTemplate VARCHAR(22) BINARY NOT NULL, + manageTemplate VARCHAR(22) BINARY NOT NULL, + adSpace VARCHAR(22) BINARY NOT NULL, + priority INTEGER DEFAULT '1', + pricePerClick Float DEFAULT '0', + pricePerImpression Float DEFAULT '0', + clickDiscounts VARCHAR(1024) default '', + impressionDiscounts VARCHAR(1024) default '', + PRIMARY KEY (assetId,revisionDate) + )"); + print "\t\tCreate Adsku crud table.\n" unless $quiet; + use WebGUI::AssetCollateral::Sku::Ad::Ad; + WebGUI::AssetCollateral::Sku::Ad::Ad->crud_createTable($session); + print "\t\tAdding to config file.\n" unless $quiet; + $session->config->addToHash("assets", 'WebGUI::Asset::Sku::Ad' => { category => 'shop' } ); + print "\tDone.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addRssFeedAspect { + my $session = shift; + print "\tAdding RssFeed asset aspect..." unless $quiet; + $session->db->write(q{create table assetAspectRssFeed ( + assetId char(22) binary not null, + revisionDate bigint not null, + itemsPerFeed int(11) default 25, + feedCopyright text, + feedTitle text, + feedDescription mediumtext, + feedImage char(22) binary, + feedImageLink text, + feedImageDescription mediumtext, + feedHeaderLinks char(32) default 'rss\natom', + primary key (assetId, revisionDate) + )}); + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addRssFeedAspectToAssets { + my $session = shift; + my $db = $session->db; + foreach my $asset_class (qw( WikiMaster SyndicatedContent Gallery GalleryAlbum )) { + print "\tAdding RssFeed aspect to $asset_class table..." unless $quiet; + my $pages = $db->read("select assetId,revisionDate from $asset_class"); + while (my ($id, $rev) = $pages->array) { + $db->write("INSERT INTO assetAspectRssFeed (assetId, revisionDate, itemsPerFeed, feedTitle, feedDescription, feedImage, feedImageLink, feedImageDescription) VALUES (?,?,25,'','',NULL,'','')",[$id,$rev]); + } + print "Done.\n" unless $quiet; + } +} + +#---------------------------------------------------------------------------- +sub convertCollaborationToRssAspect { + my $session = shift; + print "\tAdding RssFeed aspect to Collaboration, (porting rssCapableRssLimit to itemsPerFeed)..." unless $quiet; + my $db = $session->db; + my @rssFromParents; + my $pages = $db->read("SELECT Collaboration.assetId, Collaboration.revisionDate, RSSCapable.rssCapableRssLimit, RSSCapable.rssCapableRssFromParentId, RSSCapable.rssCapableRssEnabled FROM Collaboration INNER JOIN RSSCapable ON Collaboration.assetId=RSSCapable.assetId AND Collaboration.revisionDate=RSSCapable.revisionDate"); + while (my ($id, $rev, $limit, $fromParent, $enabled) = $pages->array) { + if ($fromParent) { + push @rssFromParents, $fromParent; + } + my $headerLinks = $enabled ? "rss\natom" : q{}; + $db->write("INSERT INTO assetAspectRssFeed (assetId, revisionDate, itemsPerFeed, feedTitle, feedDescription, feedImage, feedImageLink, feedImageDescription, feedHeaderLinks) VALUES (?,?,?,'','',NULL,'','',?)",[$id,$rev,$limit || 25, $headerLinks]); + } + for my $assetId (@rssFromParents) { + my $asset = eval { WebGUI::Asset->newPending($session, $assetId) }; + if ($asset) { + $asset->purge; + } + } + $db->write("DELETE FROM RSSCapable WHERE assetId IN (SELECT assetId FROM Collaboration GROUP BY assetId)"); + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub removeRssCapableAsset { + my $session = shift; + print "\tChecking for uses of RSSCapable...\n" unless $quiet; + my @rssCapableClasses = $session->db->buildArray('SELECT className FROM RSSCapable INNER JOIN asset ON RSSCapable.assetId=asset.assetId GROUP BY className'); + if (@rssCapableClasses) { + warn "\t\tThis site is using the assets\n\t\t\t" . join(', ', @rssCapableClasses) . "\n\t\twhich use the RSSCapable class! Support RSSCapable has been dropped and it will no longer be maintained.\n"; + } + else { + print "\t\tNot used, removing.\n" unless $quiet; + $session->db->write(q|DELETE FROM assetData WHERE assetId IN (SELECT assetId FROM asset WHERE className="WebGUI::Asset::RssFromParent")|); + $session->db->write(q|DELETE FROM asset WHERE className = "WebGUI::Asset::RssFromParent"|); + $session->db->write("DROP TABLE RSSCapable"); + $session->db->write("DROP TABLE RSSFromParent"); + my $rssCapableTemplates = WebGUI::Asset->getRoot($session)->getLineage(['descendants'], { + statesToInclude => [qw(published clipboard clipboard-limbo trash-limbo)], + statusToInclude => [qw(approved pending archived)], + returnObjects => 1, + includeOnlyClasses => ['WebGUI::Asset::Template'], + joinClass => 'WebGUI::Asset::Template', + whereClause => q{template.namespace = 'RSSCapable/RSS'}, + }); + for my $template (@{$rssCapableTemplates}) { + $template->trash; + } + } + print "\tDone.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub makeSurveyResponsesVersionAware { + my $session = shift; + print "\tAdding revisionDate column to Survey_response table...\n" unless $quiet; + $session->db->write("alter table Survey_response add column revisionDate bigint(20) not null default 0"); + + print "\tDefaulting revisionDate on existing responses to current latest revision... " unless $quiet; + for my $assetId ($session->db->buildArray('select assetId from Survey_response')) { + $session->db->write(<db->read('select assetId, revisionDate from Survey'); + use WebGUI::Asset::Wobject::Survey; + while (my ($assetId, $revision) = $sth->array) { + my $survey = WebGUI::Asset->new($session, $assetId, 'WebGUI::Asset::Wobject::Survey', $revision); + $survey->persistSurveyJSON; + } + print "DONE!\n" unless $quiet; + + print "\tOptimizing Survey table... " unless $quiet; + $session->db->write('optimize table Survey'); + print "DONE!\n" unless $quiet; +} + + +sub addUTCMacro { + my $session = shift; + print "\tAdd ConvertUTCToTZ Macro to config files... " unless $quiet; + # and here's our code + $session->config->addToHash('macros', 'ConvertUTCToTZ', 'ConvertUTCToTZ' ); + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub surveyCleanUp { + my $session = shift; + print "\tRemoving extra properties that may have crept into surveyJSON... " unless $quiet; + + my $sth = $session->db->read('select assetId, revisionDate from Survey'); + + while (my ($assetId, $revision) = $sth->array) { + my $survey = WebGUI::Asset->new($session, $assetId, 'WebGUI::Asset::Wobject::Survey', $revision); + + # Remove recursive properties that snuck into the mold + if (my $mold = $survey->surveyJSON->mold) { + $mold->{question}{answers} = []; + $mold->{section}{questions} = []; + } + + # Remove keys that should never have been added to sections/questions/answers + for my $s (@{$survey->surveyJSON->sections}) { + for my $q (@{$s->{questions} || []}) { + for my $a (@{$q->{answers} || []}) { + delete $a->{$_} for qw(delete copy removetype addtype func); + } + delete $q->{$_} for qw(delete copy removetype addtype func); + } + delete $s->{$_} for qw(delete copy removetype addtype func); + } + $survey->persistSurveyJSON; + } + + print "DONE!\n" unless $quiet; +} + + +sub addFieldPriceToThingyRecord { + my $session = shift; + print "\tAdd field prices to ThingyRecord... " unless $quiet; + + $session->db->write( + "ALTER TABLE ThingyRecord ADD COLUMN fieldPrice LONGTEXT", + ); + + print "DONE!\n" unless $quiet; +} + +sub replacePayPalDriver { + my $session = shift; + my $config = $session->config; + my $prop = 'paymentDrivers'; + my $old = 'WebGUI::Shop::PayDriver::PayPal::PayPalStd'; + my $drivers = $config->get($prop); + foreach my $driver (@$drivers) { + # We'll do nothing if the old paypal driver isn't used + next unless $driver eq $old; + + print "\tUpdating config to use new PayPal driver..." unless $quiet; + $config->deleteFromArray($prop, $old); + $config->addToArray($prop, 'WebGUI::Shop::PayDriver::PayPal'); + print "DONE!\n" unless $quiet; + last; + } +} + +#---------------------------------------------------------------------------- +sub replaceUsageOfOldTemplates { + my $session = shift; + print "\tRemoving usage of outdated templates with new ones... " unless $quiet; + # and here's our code + print "\n\t\tUpgrading Navigation templates... " unless $quiet; + my @navigationPairs = ( + ## New Old + [ qw/PBnav00000000000bullet PBtmpl0000000000000048/ ] ##Bulleted List <- Vertical Menu + ); + foreach my $pairs (@navigationPairs) { + my ($new, $old) = @{ $pairs }; + $session->db->write('UPDATE Navigation SET templateId=? where templateId=?', [$new, $old]); + } + print "\n\t\tUpgrading Article templates... " unless $quiet; + my @articlePairs = ( + ## New Old + [ qw/PBtmpl0000000000000103 PBtmpl0000000000000084/ ], ##Article with Image <- Center Image + [ qw/PBtmpl0000000000000123 PBtmpl0000000000000129/ ], ##Item <- Item w/pop-up Links + [ qw/PBtmpl0000000000000002 PBtmpl0000000000000207/ ], ##Default Article <- Article with Files + ); + foreach my $pairs (@articlePairs) { + my ($new, $old) = @{ $pairs }; + $session->db->write('UPDATE Article SET templateId=? where templateId=?', [$new, $old]); + } + print "\n\t\tUpgrading Layout templates... " unless $quiet; + my @layoutPairs = ( + ## New Old + [ qw/PBtmpl0000000000000135 PBtmpl00000000table125/ ], ## Side By Side <- Left Column (Table) + [ qw/PBtmpl0000000000000094 PBtmpl00000000table094/ ], ## One over two <- News (Table) + [ qw/PBtmpl0000000000000131 PBtmpl00000000table131/ ], ## Right Column <- Right Column (Table) + [ qw/PBtmpl0000000000000135 PBtmpl00000000table135/ ], ## Side By Side <- Side By Side (Table) + [ qw/PBtmpl0000000000000054 PBtmpl00000000table118/ ], ## Default Page <- Three Over One (Table) + [ qw/PBtmpl0000000000000054 PBtmpl000000000table54/ ], ## Default Page <- Default Page (Table) + [ qw/PBtmpl0000000000000109 PBtmpl00000000table109/ ], ## One Over Three <- One Over Three (Table) + [ qw/PBtmpl0000000000000135 PBtmpl0000000000000125/ ], ## Side By Side <- Left Column + [ qw/PBtmpl0000000000000054 PBtmpl0000000000000118/ ], ## Default Page <- Three Over One + ); + foreach my $pairs (@layoutPairs) { + my ($new, $old) = @{ $pairs }; + $session->db->write('UPDATE Layout SET templateId=? where templateId=?', [$new, $old]); + } + print "\n\t\tPurging old templates... " unless $quiet; + my @oldTemplates = uniq map { $_->[1] } (@navigationPairs, @articlePairs, @layoutPairs); + TEMPLATE: foreach my $templateId (@oldTemplates) { + my $template = eval { WebGUI::Asset->newPending($session, $templateId); }; + if ($@) { + print "\n\t\t\tUnable to instanciate templateId: $templateId. Skipping..."; + next TEMPLATE; + } + print "\n\t\t\tPurging ". $template->getTitle . " ..." unless $quiet; + $template->purge; + } + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub updatePayPalDriversAgain { + my $session = shift; + my $config = $session->config; + print "\tUpdating paypal drivers in config file..." unless $quiet; + my $old = 'WebGUI::Shop::PayDriver::PayPal'; + my @new = qw( + WebGUI::Shop::PayDriver::PayPal::PayPalStd + WebGUI::Shop::PayDriver::PayPal::ExpressCheckout + ); + $config->deleteFromArray('paymentDrivers', $old); + foreach my $n (@new) { + $config->deleteFromArray('paymentDrivers', $n); + $config->addToArray('paymentDrivers', $n) ; + } + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub replaceUsageOfOldTemplatesAgain { + my $session = shift; + print "\tRemoving usage of outdated templates with new ones... " unless $quiet; + # and here's our code + print "\n\t\tUpgrading Navigation templates... " unless $quiet; + my @navigationPairs = ( + ## New Old + [ qw/PBnav00000000000bullet PBtmpl0000000000000048/ ] ##Bulleted List <- Vertical Menu + ); + foreach my $pairs (@navigationPairs) { + my ($new, $old) = @{ $pairs }; + $session->db->write('UPDATE Navigation SET templateId=? where templateId=?', [$new, $old]) + } + print "\n\t\tPurging old templates... " unless $quiet; + my @oldTemplates = uniq(map { $_->[1] } (@navigationPairs)); + TEMPLATE: foreach my $templateId (@oldTemplates) { + my $template = eval { WebGUI::Asset->newPending($session, $templateId); }; + if ($@) { + print "\n\t\t\tUnable to instanciate templateId: $templateId. Skipping..."; + next TEMPLATE; + } + print "\n\t\t\tPurging ". $template->getTitle . " ..." unless $quiet; + $template->purge; + } + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addThingyRecordFieldPriceDefaults { + my $session = shift; + print "\tAdd default fieldPrice JSON to ThingyRecord... " unless $quiet; + # and here's our code + $session->db->write(q|UPDATE ThingyRecord set fieldPrice='{}' where fieldPrice IS NULL|); + print "DONE!\n" unless $quiet; +} + + +sub addFriendManagerSettings { + my $session = shift; + print "\tAdding Friend Manager Style and Layout template settings... " unless $quiet; + $session->setting->add('fmStyleTemplateId', $session->setting->get("userFunctionStyleId")); + $session->setting->add('fmLayoutTemplateId', 'N716tpSna0iIQTKxS4gTWA'); + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub fixMapTemplateFolderStyle { + my $session = shift; + print "\tFix the Map Template subfolder style template... " unless $quiet; + my $folder = WebGUI::Asset->new($session, 'brxm_faNdZX5tRo3p50g3g', 'WebGUI::Asset::Wobject::Folder'); + return unless $folder; + if ($folder) { + $folder->addRevision({ + styleTemplateId => 'PBtmpl0000000000000060', + }); + } + # and here's our code + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addExpireIncompleteSurveyResponsesWorkflow { + my $session = shift; + + print "\tAdd ExpireIncompleteSurveyResponses workflow activity... " unless $quiet; + + my $none = $session->config->get('workflowActivities/None'); + if (! grep { $_ eq 'WebGUI::Workflow::Activity::ExpireIncompleteSurveyResponses' } @$none) { + push @$none, 'WebGUI::Workflow::Activity::ExpireIncompleteSurveyResponses'; + } + $session->config->set('workflowActivities/None', [@$none]); + + my $workflow = WebGUI::Workflow->new($session, 'pbworkflow000000000001'); + my $activity = $workflow->addActivity('WebGUI::Workflow::Activity::ExpireIncompleteSurveyResponses'); + $activity->set('title', 'Expire Incomplete Survey Responses'); + $activity->set('description', 'Expires incomplete Survey Responses according to per-instance Survey settings'); + + print "DONE!\n" unless $quiet; +} + +sub addCarouselWobject{ + my $session = shift; + print "\tAdding Carousel wobject... " unless $quiet; + $session->db->write("create table Carousel ( + assetId char(22) binary not null, + revisionDate bigint not null, + items mediumtext, + templateId char(22), + primary key (assetId, revisionDate) + )"); + my $assets = $session->config->get( "assets" ); + $assets->{ "WebGUI::Asset::Wobject::Carousel" } = { category => "utilities" }; + $session->config->set( "assets", $assets ); + print "Done.\n" unless $quiet; +} + +sub addSurveyQuizModeColumns{ + my $session = shift; + print "\tAdding columns to Survey table... " unless $quiet; + $session->db->write("alter table Survey add column `quizModeSummary` TINYINT(3)"); + $session->db->write("alter table Survey add column `surveySummaryTemplateId` char(22)"); + print "Done.\n" unless $quiet; +} + +sub addSurveyExpressionEngineConfigFlag{ + my $session = shift; + print "\tAdding enableSurveyExpressionEngine config option... " unless $quiet; + $session->config->set('enableSurveyExpressionEngine', 0); + print "Done.\n" unless $quiet; +} + + +#---------------------------------------------------------------------------- +# Conditionally re-add passive analytics config because it wasn't added to WebGUI.conf.original +# in version 7.7.0. +sub reInstallPassiveAnalyticsConfig { + my $session = shift; + print "\tAdd Passive Analytics entry to the config file... " unless $quiet; + # Admin Bar/Console + my $adminConsole = $session->config->get('adminConsole'); + if (!exists $adminConsole->{'passiveAnalytics'}) { + $adminConsole->{'passiveAnalytics'} = { + "icon" => "passiveAnalytics.png", + "uiLevel" => 1, + "url" => "^PageUrl(\"\",op=passiveAnalytics;func=editRuleflow);", + "title" => "^International(Passive Analytics,PassiveAnalytics);", + "groupSetting" => "3", + }; + $session->config->set('adminConsole', $adminConsole); + } + # Content Handler + my $contentHandlers = $session->config->get('contentHandlers'); + if (!isIn('WebGUI::Content::PassiveAnalytics',@{ $contentHandlers} ) ) { + my $contentIndex = 0; + HANDLER: while ($contentIndex <= $#{ $contentHandlers } ) { + ##Insert before Operation + if($contentHandlers->[$contentIndex] eq 'WebGUI::Content::Operation') { + splice @{ $contentHandlers }, $contentIndex, 0, 'WebGUI::Content::PassiveAnalytics'; + last HANDLER; + } + ++$contentIndex; + } + $session->config->set('contentHandlers', $contentHandlers); + } + # Workflow Activities + my $workflowActivities = $session->config->get('workflowActivities'); + my @none = @{ $workflowActivities->{'None'} }; + if (!isIn('WebGUI::Workflow::Activity::SummarizePassiveAnalytics', @none)) { + push @none, 'WebGUI::Workflow::Activity::SummarizePassiveAnalytics'; + } + if (!isIn('WebGUI::Workflow::Activity::BucketPassiveAnalytics', @none)) { + push @none, 'WebGUI::Workflow::Activity::BucketPassiveAnalytics'; + } + $workflowActivities->{'None'} = [ @none ]; + $session->config->set('workflowActivities', $workflowActivities); + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub updateSurveyQuestionTypes{ + my $session = shift; + my $refs = $session->db->buildArrayRefOfHashRefs("SELECT * FROM Survey_questionTypes"); + for my $ref(@$refs){ + my $name = $ref->{questionType}; + my $params; + my @texts = split/,/,$ref->{answers}; + #next if(@texts == 0); + my $count = 0; + for my $text(@texts){ + my $verbatim = 0; + $verbatim = 1 if($text =~ /verbatim/); + push(@$params,[$text,$count++,$verbatim]); + } + _loadValues($name,$params,$session); + } +} + +sub _loadValues{ + my $name = shift; + my $values = shift; + my $session = shift; + my $answers = []; + for my $value(@$values){ + my $answer = _getAnswer(); + $answer->{text} = $value->[0]; + if($answer->{text} eq 'No'){ + $answer->{recordedAnswer} = 0; + }elsif($answer->{text} eq 'Yes'){ + $answer->{recordedAnswer} = 1; + }elsif($answer->{text} eq 'True'){ + $answer->{recordedAnswer} = 1; + }elsif($answer->{text} eq 'False'){ + $answer->{recordedAnswer} = 0; + }else{ + $answer->{recordedAnswer} = $value->[1]; + } + $answer->{verbatim} = $value->[2]; + push @$answers,$answer; + } + my $json = to_json($answers); + $session->db->write("UPDATE Survey_questionTypes SET answers = ? WHERE questionType = ?",[$json,$name]); +} + +sub _getAnswer{ + my $answer = { + text => q{}, + verbatim => 0, + textCols => 10, + textRows => 5, + goto => q{}, + gotoExpression => q{}, + recordedAnswer => q{}, + isCorrect => 1, + min => 1, + max => 10, + step => 1, + value => 1, + terminal => 0, + terminalUrl => q{}, + type => 'answer' + }; + return $answer; +} + +#---------------------------------------------------------------------------- +sub installPluggableTax { + my $session = shift; + my $db = $session->db; + print "\tInstall tables for pluggable tax system..." unless $quiet; + + # Rename table for the Generic tax plugin + $db->write( 'alter table tax rename tax_generic_rates' ); + + # Create tax driver table + $db->write( 'create table taxDriver (className char(255) not null primary key, options mediumtext)' ); + + # Table for storing EU VAT numbers. + $db->write( <config->set( 'taxDrivers', [ + 'WebGUI::Shop::TaxDriver::Generic', + 'WebGUI::Shop::TaxDriver::EU', + ] ); + + # Add a setting to store the active tax plugin. + $session->setting->add( 'activeTaxPlugin', 'WebGUI::Shop::TaxDriver::Generic' ); + + # Add column to sku for storing each sku's tax configuration. + $db->write( "alter table sku add column taxConfiguration mediumtext " ); + + # Migrate the tax overrides of skus into the tax configuration column. + # Don't use getLineage because this has to be done for each revision. + my $sth = $db->read( "select assetId, revisionDate, overrideTaxRate, taxRateOverride from sku" ); + while (my $row = $sth->hashRef) { + my $config = { + overrideTaxRate => $row->{ overrideTaxRate } || 0, + taxRateOverride => $row->{ taxRateOverride } || 0, + }; + + $db->write( 'update sku set taxConfiguration=? where assetId=? and revisionDate=?', [ + to_json( $config ), + $row->{ assetId }, + $row->{ revisionDate }, + ]); + } + $sth->finish; + + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +# Add the ThingyRecord sku +sub installThingyRecord { + my ( $session ) = shift; + print "\tInstalling ThingyRecord sku... " unless $quiet; + + $session->config->addToHash('assets','WebGUI::Asset::Sku::ThingyRecord', { + category => "shop", + }); + + # Install ThingyRecord + $session->db->write( <<'ENDSQL' ); + CREATE TABLE IF NOT EXISTS ThingyRecord ( + assetId CHAR(22) BINARY NOT NULL, + revisionDate BIGINT NOT NULL, + templateIdView CHAR(22) BINARY, + thingId CHAR(22) BINARY, + thingFields LONGTEXT, + thankYouText LONGTEXT, + price FLOAT, + duration BIGINT, + PRIMARY KEY (assetId, revisionDate) + ); +ENDSQL + + # Install collateral + use WebGUI::AssetCollateral::Sku::ThingyRecord::Record; + WebGUI::AssetCollateral::Sku::ThingyRecord::Record->crud_createTable($session); + + # Update workflow + my $activityClass = 'WebGUI::Workflow::Activity::ExpirePurchasedThingyRecords'; + $session->config->addToArray( 'workflow/None', $activityClass ); + my $workflow = WebGUI::Workflow->new( $session, 'pbworkflow000000000004' ); + my $activity = $workflow->addActivity( $activityClass ); + $activity->set('title', "Expire Purchased Thingy Records"); + $activity->set('description', "Expire any expired thingy records. Send notifications of imminent expiration."); + + print "DONE!\n" unless $quiet; +} + +sub addSurveyBackButtonColumn{ + my $session = shift; + print "\tAdding allowBackBtn column to Survey table... " unless $quiet; + $session->db->write("alter table Survey add column `allowBackBtn` TINYINT(3)"); + print "Done.\n" unless $quiet; +} + +sub turnOffAdmin { + my $session = shift; + print "\tAdding admin off link to admin console." unless $quiet; + $session->config->addToHash("adminConsole","adminConsoleOff", { + "icon" => "adminConsoleOff.gif", + "group" => "12", + "uiLevel" => 1, + "url" => "^PageUrl(\"\",op=switchOffAdmin);", + "title" => "^International(12,WebGUI);" + }); + print "OK\n" unless $quiet; +} + +sub addGlobalHeadTags { + my ( $session ) = @_; + print "\tAdding Global HEAD tags setting... " unless $quiet; + $session->setting->add('globalHeadTags',''); + print "OK\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub fixConfigs { + my $session = shift; + print "\tFixing misconfigurations... " unless $quiet; + my $config = $session->config; + $config->delete('workflow'); + $config->addToArray( 'workflowActivities/None', 'WebGUI::Workflow::Activity::ExpirePurchasedThingyRecords'); + $config->set('taxDrivers', [ + "WebGUI::Shop::TaxDriver::Generic", + "WebGUI::Shop::TaxDriver::EU" + ]); + $config->set('macros/SpectreCheck', 'SpectreCheck'); + $config->set('assets/WebGUI::Asset::Sku::ThingyRecord', { + category => 'shop', + }); + $config->set('assets/WebGUI::Asset::Wobject::Carousel', { + category => 'utilities', + }); + + print "Done.\n" unless $quiet; +} + + +sub installStoryManagerTables { + my ($session) = @_; + print "\tAdding Story Manager tables... " unless $quiet; + my $db = $session->db; + $db->write(<write(<write(<config; + $config->addToHash( + 'assets', + 'WebGUI::Asset::Wobject::StoryTopic' => { + 'category' => 'community' + }, + ); + $config->addToHash( + 'assets', + "WebGUI::Asset::Wobject::StoryArchive" => { + "isContainer" => 1, + "category" => "community" + }, + ); + $config->addToArray('workflowActivities/None', 'WebGUI::Workflow::Activity::ArchiveOldStories'); + print "DONE!\n" unless $quiet; +} + +sub sm_updateDailyWorkflow { + my ($session) = @_; + print "\tAdding Archive Old Stories to Daily Workflow... " unless $quiet; + my $workflow = WebGUI::Workflow->new($session, 'pbworkflow000000000001'); + foreach my $activity (@{ $workflow->getActivities }) { + return if $activity->getName() eq 'WebGUI::Workflow::Activity::ArchiveOldStories'; + } + my $activity = $workflow->addActivity('WebGUI::Workflow::Activity::ArchiveOldStories'); + $activity->set('title', 'Archive Old Stories'); + $activity->set('description', 'Archive old stories, based on the settings of the Story Archives that own them'); + print "DONE!\n" unless $quiet; +} + + +sub addShipsSeparateToSku { + my ($session) = @_; + print "\tAdd shipsSeparate property to Sku... " unless $quiet; + $session->db->write(<db->write("ALTER TABLE template ADD templatePacked LONGTEXT"); + $session->db->write("ALTER TABLE template ADD usePacked INT(1)"); + + print "\n\t\tPre-packing all templates, this may take a while..." unless $quiet; + my $sth = $session->db->read( "SELECT DISTINCT(assetId) FROM template" ); + while ( my ($assetId) = $sth->array ) { + my $asset = WebGUI::Asset::Template->new( $session, $assetId ); + next unless $asset; + $asset->update({ + template => $asset->get('template'), + usePacked => 0, + }); + } + + print "\n\t\tAdding extra head tags packing..." unless $quiet; + $session->db->write("ALTER TABLE assetData ADD extraHeadTagsPacked LONGTEXT"); + $session->db->write("ALTER TABLE assetData ADD usePackedHeadTags INT(1)"); + + print "\n\t\tPre-packing all head tags, this may take a while..." unless $quiet; + $sth = $session->db->read( "SELECT assetId FROM asset" ); + while ( my ($assetId) = $sth->array ) { + my $asset = WebGUI::Asset->newByDynamicClass( $session, $assetId ); + next unless $asset; + $asset->update({ + extraHeadTags => $asset->get('extraHeadTags'), + usePackedHeadTags => 0, + }); + } + + print "\n\t\tAdding snippet packing..." unless $quiet; + $session->db->write("ALTER TABLE snippet ADD snippetPacked LONGTEXT"); + $session->db->write("ALTER TABLE snippet ADD usePacked INT(1)"); + + print "\n\t\tPre-packing all snippets, this may take a while..." unless $quiet; + $sth = $session->db->read( "SELECT DISTINCT(assetId) FROM snippet" ); + while ( my ($assetId) = $sth->array ) { + my $asset = WebGUI::Asset->newByDynamicClass( $session, $assetId ); + next unless $asset; + $asset->update({ + snippet => $asset->get('snippet'), + usePacked => 0, + }); + } + + print "\n\t... DONE!\n" unless $quiet; +} + +sub sendWebguiStats { + my $session = shift; + print "\tAdding a workflow to allow users to take part in the WebGUI stats project..." unless $quiet; + my $wf = WebGUI::Workflow->create($session, { + type => 'None', + mode => 'singleton', + enabled => 1, + title => 'Send WebGUI Stats', + description => 'This workflow sends some information about your site to the central WebGUI statistics repository. No personal information is sent. The information is used to help determine the future direction WebGUI should take.', + }, 'send_webgui_statistics'); + my $act = $wf->addActivity('WebGUI::Workflow::Activity::SendWebguiStats','send_webgui_statistics'); + $act->set('title', 'Send WebGUI Stats'); + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addMobileStyleTemplate { + my $session = shift; + print "\tAdding mobile style template field... " unless $quiet; + $session->db->write(q{ + ALTER TABLE wobject ADD COLUMN mobileStyleTemplateId CHAR(22) BINARY DEFAULT 'PBtmpl0000000000000060' + }); + $session->db->write(q{ + UPDATE wobject SET mobileStyleTemplateId = styleTemplateId + }); + $session->db->write(q{ + ALTER TABLE Layout ADD COLUMN mobileTemplateId CHAR(22) BINARY DEFAULT 'PBtmpl0000000000000054' + }); + $session->setting->add('useMobileStyle', 0); + $session->config->set('mobileUserAgents', [ + 'AvantGo', + 'DoCoMo', + 'Vodafone', + 'EudoraWeb', + 'Minimo', + 'UP\.Browser', + 'PLink', + 'Plucker', + 'NetFront', + '^WM5 PIE$', + 'Xiino', + 'iPhone', + 'Opera Mobi', + 'BlackBerry', + 'Opera Mini', + 'HP iPAQ', + 'IEMobile', + 'Profile/MIDP', + 'Smartphone', + 'Symbian ?OS', + 'J2ME/MIDP', + 'PalmSource', + 'PalmOS', + 'Windows CE', + 'Opera Mini', + ]); + print "Done.\n" unless $quiet; +} + + +#---------------------------------------------------------------------------- +sub addListingsCacheTimeoutToMatrix{ + my $session = shift; + print "\tAdding listingsCacheTimeout setting to Matrix table... " unless $quiet; + $session->db->write("alter table Matrix add listingsCacheTimeout int(11) not null default 3600;"); + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addTemplateAttachmentsTable { + my $session = shift; + print "\tAdding template attachments table... " unless $quiet; + my $create = q{ + CREATE TABLE template_attachments ( + templateId CHAR(22) BINARY, + revisionDate bigint(20), + url varchar(256), + type varchar(20), + sequence int(11), + + PRIMARY KEY (templateId, revisionDate, url) + ) + }; + $session->db->write($create); + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +# Rollback usePacked. It should be carefully applied manually for now +sub revertUsePacked { + my $session = shift; + print "\tReverting use packed... " unless $quiet; + my $iter = WebGUI::Asset->getIsa( $session ); + while ( my $asset = $iter->() ) { + $asset->update({ usePackedHeadTags => 0 }); + if ( $asset->isa('WebGUI::Asset::Template') || $asset->isa('WebGUI::Asset::Snippet') ) { + $asset->update({ usePacked => 0 }); + } + } + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addShippingDrivers { + my $session = shift; + print "\tAdding columns for improved VAT number checking..." unless $quiet; + $session->config->addToArray('shippingDrivers', 'WebGUI::Shop::ShipDriver::USPS'); + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addEuVatDbColumns { + my $session = shift; + print "\tAdding columns for improved VAT number checking..." unless $quiet; + + $session->db->write( 'alter table tax_eu_vatNumbers add column viesErrorCode int(3) default NULL' ); + + print "Done\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addTransactionTaxColumns { + my $session = shift; + print "\tAdding columns for storing tax data in the transaction log..." unless $quiet; + + $session->db->write( 'alter table transactionItem add column taxRate decimal(6,3)' ); + $session->db->write( 'alter table transactionItem add column taxConfiguration mediumtext' ); + $session->db->write( 'alter table transactionItem change vendorPayoutAmount vendorPayoutAmount decimal (8,2) default 0.00' ); + + print "Done\n" unless $quiet; + +} + +sub addDataFormColumns { + my $session = shift; + print "\tAdding column to store htmlArea Rich Editor in DataForm Table ..." unless $quiet; + + my $sth = $session->db->read( 'show columns in DataForm where field = "htmlAreaRichEditor"' ); + if ($sth->rows() == 0) { # only add column if it is not already there + $session->db->write( 'alter TABLE `DataForm` add column `htmlAreaRichEditor` varchar(22) default "**Use_Default_Editor**"' ); + } + + print "Done\n" unless $quiet; + +} + +#---------------------------------------------------------------------------- +sub addSurveyFeedbackTemplateColumn { + my $session = shift; + print "\tAdding columns for Survey Feedback Template..." unless $quiet; + $session->db->write("alter table Survey add column `feedbackTemplateId` char(22)"); + + print "Done\n" unless $quiet; + +} + +#---------------------------------------------------------------------------- +# Your sub here +sub installCopySender { + my $session = shift; + return if $session->setting->has('inboxCopySender'); + $session->setting->add('inboxCopySender',0); +} + +sub installNotificationsSettings { + my $session = shift; + $session->setting->add('sendInboxNotificationsOnly', 0); + $session->setting->add('inboxNotificationTemplateId', 'b1316COmd9xRv4fCI3LLGA'); +} + +sub installSMSUserProfileFields { + my $session = shift; + WebGUI::ProfileField->create( + $session, + 'receiveInboxEmailNotifications', + { + label => q!WebGUI::International::get('receive inbox emails','Message_Center')!, + visible => 1, + required => 0, + protected => 1, + editable => 1, + fieldType => 'yesNo', + dataDefault => 1, + }, + 4, + ); + WebGUI::ProfileField->create( + $session, + 'receiveInboxSmsNotifications', + { + label => q!WebGUI::International::get('receive inbox sms','Message_Center')!, + visible => 1, + required => 0, + protected => 1, + editable => 1, + fieldType => 'yesNo', + dataDefault => 0, + }, + 4, + ); +} + +sub installSMSSettings { + my $session = shift; + $session->setting->add('smsGateway', ''); +} + +sub upgradeSMSMailQueue { + my $session = shift; + $session->db->write('alter table mailQueue add column isInbox TINYINT(4) default 0'); +} + +#---------------------------------------------------------------------------- +sub addPayDrivers { + my $session = shift; + print "\tAdding PayPal driver checking..." unless $quiet; + $session->config->addToArray('paymentDrivers', 'WebGUI::Shop::PayDriver::PayPal::PayPalStd'); + print "DONE!\n" unless $quiet; +} + +sub installSurveyTest { + my $session = shift; + print "\tInstall Survey test table, via Crud... " unless $quiet; + use WebGUI::Asset::Wobject::Survey::Test; + WebGUI::Asset::Wobject::Survey::Test->crud_createTable($session); + print "DONE!\n" unless $quiet; +} + +sub addCollaborationColumns { + my $session = shift; + print "\tAdding columns to store htmlArea Rich Editor and Filter Code for Replies in Collaboration Table ..." unless $quiet; + + my $sth = $session->db->read( 'show columns in Collaboration where field = "replyRichEditor"' ); + if ($sth->rows() == 0) { # only add columns if it hasn't been added already + $session->db->write( 'alter TABLE `Collaboration` add column `replyRichEditor` varchar(22) default "PBrichedit000000000002"') ; + $session->db->write( 'update `Collaboration` set `replyRichEditor` = `richEditor` ') ; + } + + $sth = $session->db->read( 'show columns in Collaboration where field = "replyFilterCode"' ); + if ($sth->rows() == 0) { # only add columns if it hasn't been added already + $session->db->write( 'alter TABLE `Collaboration` add column `replyFilterCode` varchar(30) default "javascript"') ; + $session->db->write( 'update `Collaboration` set `replyFilterCode` = `filterCode` ') ; + } + + print "Done\n" unless $quiet; + +} + +sub installFriendManagerSettings { + my $session = shift; + print "\tInstalling FriendManager into settings..."; + $session->setting->add('groupIdAdminFriends', '3'); + $session->setting->add('fmViewTemplateId', '64tqS80D53Z0JoAs2cX2VQ'); + $session->setting->add('fmEditTemplateId', 'lG2exkH9FeYvn4pA63idNg'); + $session->setting->add('groupsToManageFriends', '2'); + $session->setting->add('overrideAbleToBeFriend', 0); + print "\tDone\n"; +} + +sub installFriendManagerConfig { + my $session = shift; + my $config = $session->config; + my $account = $config->get('account'); + my @classes = map { $_->{className} } @{ $account }; + return if isIn('WebGUI::Account::FriendManager', @classes); + print "\tInstalling FriendManager into config file..."; + push @{ $account }, + { + identifier => 'friendManager', + title => '^International(title,Account_FriendManager);', + className => 'WebGUI::Account::FriendManager', + } + ; + $config->set('account', $account); + print "\tDone\n"; +} + +sub removeDanglingOldRssAssets { + my $session = shift; + print "\tChecking for uses of RSSCapable...\n" unless $quiet; + my $peek = $session->db->dbh->table_info(undef, undef, 'RSSCapable'); + if ($peek->fetchrow_hashref()) { + my @rssCapableClasses = $session->db->buildArray('SELECT className FROM RSSCapable INNER JOIN asset ON RSSCapable.assetId=asset.assetId GROUP BY className'); + if (@rssCapableClasses) { + warn "\t\tThis site is using the assets\n\t\t\t" . join(', ', @rssCapableClasses) . "\n\t\twhich use the RSSCapable class! Support RSSCapable has been dropped and it will no longer be maintained.\n"; + } + else { + print "\t\tNot used, removing leftover assets, if any.\n" unless $quiet; + $session->db->write(q|DELETE FROM assetData WHERE assetId IN (SELECT assetId FROM asset WHERE className="WebGUI::Asset::RssFromParent")|); + $session->db->write(q|DELETE FROM asset WHERE className = "WebGUI::Asset::RssFromParent"|); + } + } + print "\tDone.\n" unless $quiet; +} + + +#---------------------------------------------------------------------------- +sub addUserControlWorkflows { + my $session = shift; + print "\tAdding Activate, Deactivate, Delete User workflow activities..." unless $quiet; + $session->config->addToArray('workflowActivities/WebGUI::User', 'WebGUI::Workflow::Activity::ActivateUser'); + $session->config->addToArray('workflowActivities/WebGUI::User', 'WebGUI::Workflow::Activity::DeactivateUser'); + $session->config->addToArray('workflowActivities/WebGUI::User', 'WebGUI::Workflow::Activity::DeleteUser'); + print " Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub fixSMSUserProfileI18N { + my $session = shift; + print "\tFixing bad I18N in SMS user profile fields..." unless $quiet; + my $field = WebGUI::ProfileField->new($session, 'receiveInboxEmailNotifications'); + my $properties = $field->get(); + $properties->{label} = q!WebGUI::International::get('receive inbox emails','WebGUI')!; + $field->set($properties); + + $field = WebGUI::ProfileField->new($session, 'receiveInboxSmsNotifications'); + $properties = $field->get(); + $properties->{label} = q!WebGUI::International::get('receive inbox sms','WebGUI')!; + $field->set($properties); + + print "Done\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addOgoneToConfig { + my $session = shift; + print "\tAdding Ogone payment plugin..." unless $quiet; + + $session->config->addToArray('paymentDrivers', 'WebGUI::Shop::PayDriver::Ogone'); + + print "Done\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addUseEmailAsUsernameToSettings { + my $session = shift; + print "\tAdding webguiUseEmailAsUsername to settings " unless $quiet; + + $session->db->write("insert into settings (name, value) values ('webguiUseEmailAsUsername',0)"); + + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addRedirectAfterLoginUrlToSettings { + my $session = shift; + print "\tAdding redirectAfterLoginUrl to settings " unless $quiet; + + $session->db->write("insert into settings (name, value) values ('redirectAfterLoginUrl',NULL)"); + + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub alterVATNumberTable { + my $session = shift; + print "\tAdapting VAT Number table..." unless $quiet; + + $session->db->write('alter table tax_eu_vatNumbers change column approved viesValidated tinyint(1)'); + $session->db->write('alter table tax_eu_vatNumbers add column approved tinyint(1)'); + + print "Done\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addSurveyTestResultsTemplateColumn { + my $session = shift; + print "\tAdding columns for Survey Test Results Template..." unless $quiet; + my $sth = $session->db->read('describe Survey testResultsTemplateId'); + if (! defined $sth->hashRef) { + $session->db->write("alter table Survey add column `testResultsTemplateId` char(22)"); + } + + print "Done\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub updateSurveyTest { + my $session = shift; + print "\tUpdate Survey test table, via Crud... " unless $quiet; + use WebGUI::Asset::Wobject::Survey::Test; + WebGUI::Asset::Wobject::Survey::Test->crud_updateTable($session); + print "DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub installFilePumpAdminGroup { + my $session = shift; + print "\tAdding FilePump admin group setting... " unless $quiet; + ##Content Handler + #if (! $session->setting->has('groupIdAdminFilePump')) { + $session->setting->add('groupIdAdminFilePump','8'); + print "\tAdded FilePump admin group ... \n" unless $quiet; + #} + print "Done.\n" unless $quiet; +} +#---------------------------------------------------------------------------- +sub addEmsScheduleColumns { + my $session = shift; + print "\tAdding columns for the EMS Schedule table..." unless $quiet; + + $session->db->write( 'alter table EventManagementSystem add column scheduleTemplateId char(22)' ); + $session->db->write( 'alter table EventManagementSystem add column scheduleColumnsPerPage integer' ); + + print "Done\n" unless $quiet; + +} + + +#---------------------------------------------------------------------------- +sub installFilePumpHandler { + my $session = shift; + print "\tAdding FilePump content handler... " unless $quiet; + ##Content Handler + my $contentHandlers = $session->config->get('contentHandlers'); + $session->config->addToHash( 'macros', { FilePump => 'FilePump' }); + my $handlers = $session->config->get('contentHandlers'); + my $newHandlers = []; + if (!isIn('WebGUI::Content::FilePump', @{ $handlers })) { + foreach my $handler (@{ $handlers }) { + if ($handler eq 'WebGUI::Content::Operation') { + push @{ $newHandlers }, 'WebGUI::Content::FilePump'; + } + push @{ $newHandlers }, $handler; + } + } + else { + $newHandlers = $handlers; + } + $session->config->set('contentHandlers', $newHandlers); + + ##Admin Console + $session->config->addToHash('adminConsole', 'filePump', { + "icon" => "filePump.png", + "groupSetting" => "groupIdAdminFilePump", + "uiLevel" => 5, + "url" => "^PageUrl(\"\",op=filePump);", + "title" => "^International(File Pump,FilePump);" + }); + ##Setting for custom group + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub installFilePumpTable { + my $session = shift; + print "\tAdding FilePump database table via CRUD... " unless $quiet; + WebGUI::FilePump::Bundle->crud_createTable($session); + print "Done.\n" unless $quiet; +} + + +#---------------------------------------------------------------------------- +# Add the map asset +sub addMapAsset { + my $session = shift; + print "\tAdding Google Map asset..." unless $quiet; + + # Map asset + $session->db->write(<<'ENDSQL'); +CREATE TABLE IF NOT EXISTS Map ( + assetId CHAR(22) BINARY NOT NULL, + revisionDate BIGINT NOT NULL, + groupIdAddPoint CHAR(22) BINARY, + mapApiKey TEXT, + mapHeight CHAR(12), + mapWidth CHAR(12), + startLatitude FLOAT, + startLongitude FLOAT, + startZoom TINYINT UNSIGNED, + templateIdEditPoint CHAR(22) BINARY, + templateIdView CHAR(22) BINARY, + templateIdViewPoint CHAR(22) BINARY, + workflowIdPoint CHAR(22) BINARY, + PRIMARY KEY (assetId, revisionDate) +); +ENDSQL + + # MapPoint asset + $session->db->write(<<'ENDSQL'); +CREATE TABLE IF NOT EXISTS MapPoint ( + assetId CHAR(22) BINARY NOT NULL, + revisionDate BIGINT NOT NULL, + latitude FLOAT, + longitude FLOAT, + website VARCHAR(255), + address1 VARCHAR(255), + address2 VARCHAR(255), + city VARCHAR(255), + state VARCHAR(255), + zipCode VARCHAR(255), + country VARCHAR(255), + phone VARCHAR(255), + fax VARCHAR(255), + email VARCHAR(255), + storageIdPhoto CHAR(22) BINARY, + userDefined1 TEXT, + userDefined2 TEXT, + userDefined3 TEXT, + userDefined4 TEXT, + userDefined5 TEXT, + PRIMARY KEY (assetId, revisionDate) +); +ENDSQL + + # Add to assets + $session->config->addToHash( "assets", 'WebGUI::Asset::Wobject::Map', { + "category" => "basic", + }); + + print "Done!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addMobileStyleConfig { + my $session = shift; + print "\tAdding mobile style user agents to config file... " unless $quiet; + $session->config->set('mobileUserAgents', [ + 'AvantGo', + 'DoCoMo', + 'Vodafone', + 'EudoraWeb', + 'Minimo', + 'UP\.Browser', + 'PLink', + 'Plucker', + 'NetFront', + '^WM5 PIE$', + 'Xiino', + 'iPhone', + 'Opera Mobi', + 'BlackBerry', + 'Opera Mini', + 'HP iPAQ', + 'IEMobile', + 'Profile/MIDP', + 'Smartphone', + 'Symbian ?OS', + 'J2ME/MIDP', + 'PalmSource', + 'PalmOS', + 'Windows CE', + 'Opera Mini', + ]); + print "Done.\n" unless $quiet; +} + + +#---------------------------------------------------------------------------- +# Repack all templates since the packed columns may have been wiped out due to the bug. +sub repackTemplates { + my $session = shift; + + print "\n\t\tRepacking all templates that use packing, this may take a while..." unless $quiet; + my $sth = $session->db->read( "SELECT DISTINCT(assetId) FROM template where usePacked=1" ); + while ( my ($assetId) = $sth->array ) { + my $asset = WebGUI::Asset::Template->new( $session, $assetId ); + next unless $asset; + $asset->update({ + template => $asset->get('template'), + usePacked => 0, + }); + } + + print "\n\t\tRepacking head tags in assets that use packing, this may take a while..." unless $quiet; + $sth = $session->db->read( "SELECT distinct(assetId) FROM assetData where usePackedHeadTags=1" ); + while ( my ($assetId) = $sth->array ) { + my $asset = WebGUI::Asset->newByDynamicClass( $session, $assetId ); + next unless $asset; + $asset->update({ + extraHeadTags => $asset->get('extraHeadTags'), + usePackedHeadTags => 0, + }); + } + + print "\n\t\tRepacking snippets that use packing, this may take a while..." unless $quiet; + $sth = $session->db->read( "SELECT DISTINCT(assetId) FROM snippet where usePacked=1" ); + while ( my ($assetId) = $sth->array ) { + my $asset = WebGUI::Asset->newByDynamicClass( $session, $assetId ); + next unless $asset; + $asset->update({ + snippet => $asset->get('snippet'), + usePacked => 0, + }); + } + + print "\n\t... DONE!\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addStoryPhotoWidth { + my $session = shift; + print "\tAdd a width parameter to the StoryManager... " unless $quiet; + # and here's our code + $session->db->write(<createTemp( $session ); + $storage->addFileFromFilesystem( $file ); + + # Import the package into the import node + my $package = eval { WebGUI::Asset->getImportNode($session)->importPackage( $storage ); }; + + 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."; + } + + # Turn off the package flag, and set the default flag for templates added + my $assetIds = $package->getLineage( ['self','descendants'] ); + for my $assetId ( @{ $assetIds } ) { + my $asset = WebGUI::Asset->newByDynamicClass( $session, $assetId ); + if ( !$asset ) { + print "Couldn't instantiate asset with ID '$assetId'. Please check package '$file' for corruption.\n"; + next; + } + my $properties = { isPackage => 0 }; + if ($asset->isa('WebGUI::Asset::Template')) { + $properties->{isDefault} = 1; + } + $asset->update( $properties ); + } + + 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',".$session->datetime->time().")"); + $session->close(); +} + +#------------------------------------------------- +sub updateTemplates { + my $session = shift; + print "\tUpdating packages.\n" unless ($quiet); + addPackage( $session, 'packages-7.6.35-7.7.17/merged.wgpkg' ); +} + +#vim:ft=perl