diff --git a/docs/upgrades/packages-7.5.40-7.6.10/merged.wgpkg b/docs/upgrades/packages-7.5.40-7.6.10/merged.wgpkg deleted file mode 100644 index 38291af26..000000000 Binary files a/docs/upgrades/packages-7.5.40-7.6.10/merged.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.2/datatable.wgpkg b/docs/upgrades/packages-7.6.2/datatable.wgpkg deleted file mode 100644 index d186b5ef0..000000000 Binary files a/docs/upgrades/packages-7.6.2/datatable.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.2/root_import_ems_badge-builder-default.wgpkg b/docs/upgrades/packages-7.6.2/root_import_ems_badge-builder-default.wgpkg deleted file mode 100644 index 51932ab69..000000000 Binary files a/docs/upgrades/packages-7.6.2/root_import_ems_badge-builder-default.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.2/root_import_ems_ems-badge-listing-default.wgpkg b/docs/upgrades/packages-7.6.2/root_import_ems_ems-badge-listing-default.wgpkg deleted file mode 100644 index c80f77179..000000000 Binary files a/docs/upgrades/packages-7.6.2/root_import_ems_ems-badge-listing-default.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.2/root_import_ems_lookup-registrant-default.wgpkg b/docs/upgrades/packages-7.6.2/root_import_ems_lookup-registrant-default.wgpkg deleted file mode 100644 index 4a753b656..000000000 Binary files a/docs/upgrades/packages-7.6.2/root_import_ems_lookup-registrant-default.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.2/root_import_gallery-templates_gallery-ie.css.wgpkg b/docs/upgrades/packages-7.6.2/root_import_gallery-templates_gallery-ie.css.wgpkg deleted file mode 100644 index 1f2298e8f..000000000 Binary files a/docs/upgrades/packages-7.6.2/root_import_gallery-templates_gallery-ie.css.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.2/root_import_gallery-templates_gallery.css.wgpkg b/docs/upgrades/packages-7.6.2/root_import_gallery-templates_gallery.css.wgpkg deleted file mode 100644 index 33c1bb9d4..000000000 Binary files a/docs/upgrades/packages-7.6.2/root_import_gallery-templates_gallery.css.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.2/root_import_webgui-7-style-3.wgpkg b/docs/upgrades/packages-7.6.2/root_import_webgui-7-style-3.wgpkg deleted file mode 100644 index 5c10463c3..000000000 Binary files a/docs/upgrades/packages-7.6.2/root_import_webgui-7-style-3.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.2/shopping-cart-collateral-items_address-default.wgpkg b/docs/upgrades/packages-7.6.2/shopping-cart-collateral-items_address-default.wgpkg deleted file mode 100644 index a1cf0e561..000000000 Binary files a/docs/upgrades/packages-7.6.2/shopping-cart-collateral-items_address-default.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.2/style_03.wgpkg b/docs/upgrades/packages-7.6.2/style_03.wgpkg deleted file mode 100644 index a3e7fe895..000000000 Binary files a/docs/upgrades/packages-7.6.2/style_03.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.2/templates_thingy-default-edit-thing.wgpkg b/docs/upgrades/packages-7.6.2/templates_thingy-default-edit-thing.wgpkg deleted file mode 100644 index ebe8233cb..000000000 Binary files a/docs/upgrades/packages-7.6.2/templates_thingy-default-edit-thing.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.2/users-online-macro-templates.wgpkg b/docs/upgrades/packages-7.6.2/users-online-macro-templates.wgpkg deleted file mode 100644 index 5cb5e2a31..000000000 Binary files a/docs/upgrades/packages-7.6.2/users-online-macro-templates.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.3/default_product.wgpkg b/docs/upgrades/packages-7.6.3/default_product.wgpkg deleted file mode 100644 index c44bad2da..000000000 Binary files a/docs/upgrades/packages-7.6.3/default_product.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.3/default_syndicated_content.wgpkg b/docs/upgrades/packages-7.6.3/default_syndicated_content.wgpkg deleted file mode 100644 index 18edf8ff0..000000000 Binary files a/docs/upgrades/packages-7.6.3/default_syndicated_content.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.3/syndicated_articles.wgpkg b/docs/upgrades/packages-7.6.3/syndicated_articles.wgpkg deleted file mode 100644 index 9135203a6..000000000 Binary files a/docs/upgrades/packages-7.6.3/syndicated_articles.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/default-shopping-cart-template.wgpkg b/docs/upgrades/packages-7.6.4/default-shopping-cart-template.wgpkg deleted file mode 100644 index 318e8bde4..000000000 Binary files a/docs/upgrades/packages-7.6.4/default-shopping-cart-template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/default-wiki-page.wgpkg b/docs/upgrades/packages-7.6.4/default-wiki-page.wgpkg deleted file mode 100644 index 0f12ff947..000000000 Binary files a/docs/upgrades/packages-7.6.4/default-wiki-page.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/default_ldap_account_display_template.wgpkg b/docs/upgrades/packages-7.6.4/default_ldap_account_display_template.wgpkg deleted file mode 100644 index 7c649dbb6..000000000 Binary files a/docs/upgrades/packages-7.6.4/default_ldap_account_display_template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/default_post_form.wgpkg b/docs/upgrades/packages-7.6.4/default_post_form.wgpkg deleted file mode 100644 index 384bf8805..000000000 Binary files a/docs/upgrades/packages-7.6.4/default_post_form.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/default_submission_form.wgpkg b/docs/upgrades/packages-7.6.4/default_submission_form.wgpkg deleted file mode 100644 index 1228779db..000000000 Binary files a/docs/upgrades/packages-7.6.4/default_submission_form.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/default_webgui_account_display_template.wgpkg b/docs/upgrades/packages-7.6.4/default_webgui_account_display_template.wgpkg deleted file mode 100644 index cea33fea3..000000000 Binary files a/docs/upgrades/packages-7.6.4/default_webgui_account_display_template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/default_webgui_password_recovery_template.wgpkg b/docs/upgrades/packages-7.6.4/default_webgui_password_recovery_template.wgpkg deleted file mode 100644 index 851820423..000000000 Binary files a/docs/upgrades/packages-7.6.4/default_webgui_password_recovery_template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/faq_submission_form.wgpkg b/docs/upgrades/packages-7.6.4/faq_submission_form.wgpkg deleted file mode 100644 index 1d01e7df5..000000000 Binary files a/docs/upgrades/packages-7.6.4/faq_submission_form.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/job_submission_form.wgpkg b/docs/upgrades/packages-7.6.4/job_submission_form.wgpkg deleted file mode 100644 index bf3114efb..000000000 Binary files a/docs/upgrades/packages-7.6.4/job_submission_form.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/link_list_submission_form.wgpkg b/docs/upgrades/packages-7.6.4/link_list_submission_form.wgpkg deleted file mode 100644 index 45e4c8b6d..000000000 Binary files a/docs/upgrades/packages-7.6.4/link_list_submission_form.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/matrix-default-compare-template.wgpkg b/docs/upgrades/packages-7.6.4/matrix-default-compare-template.wgpkg deleted file mode 100644 index 3ee42d4ef..000000000 Binary files a/docs/upgrades/packages-7.6.4/matrix-default-compare-template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/matrix-default-detailed-listing.wgpkg b/docs/upgrades/packages-7.6.4/matrix-default-detailed-listing.wgpkg deleted file mode 100644 index 97bbf93af..000000000 Binary files a/docs/upgrades/packages-7.6.4/matrix-default-detailed-listing.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/matrix-default-view-template.wgpkg b/docs/upgrades/packages-7.6.4/matrix-default-view-template.wgpkg deleted file mode 100644 index 406163dda..000000000 Binary files a/docs/upgrades/packages-7.6.4/matrix-default-view-template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/matrix-search-template.wgpkg b/docs/upgrades/packages-7.6.4/matrix-search-template.wgpkg deleted file mode 100644 index 79496b5b8..000000000 Binary files a/docs/upgrades/packages-7.6.4/matrix-search-template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/newslettercstemplate.wgpkg b/docs/upgrades/packages-7.6.4/newslettercstemplate.wgpkg deleted file mode 100644 index abcee5660..000000000 Binary files a/docs/upgrades/packages-7.6.4/newslettercstemplate.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/request-tracker-template2.wgpkg b/docs/upgrades/packages-7.6.4/request-tracker-template2.wgpkg deleted file mode 100644 index bbc1b4de9..000000000 Binary files a/docs/upgrades/packages-7.6.4/request-tracker-template2.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/root_import_account.wgpkg b/docs/upgrades/packages-7.6.4/root_import_account.wgpkg deleted file mode 100644 index dd9f9d786..000000000 Binary files a/docs/upgrades/packages-7.6.4/root_import_account.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/root_import_default-donation-template.wgpkg b/docs/upgrades/packages-7.6.4/root_import_default-donation-template.wgpkg deleted file mode 100644 index 0239a7994..000000000 Binary files a/docs/upgrades/packages-7.6.4/root_import_default-donation-template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/root_import_survey.wgpkg b/docs/upgrades/packages-7.6.4/root_import_survey.wgpkg deleted file mode 100644 index 1fc6aef19..000000000 Binary files a/docs/upgrades/packages-7.6.4/root_import_survey.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/shopping-cart-collateral-items_address-book-default.wgpkg b/docs/upgrades/packages-7.6.4/shopping-cart-collateral-items_address-book-default.wgpkg deleted file mode 100644 index dcbe896e2..000000000 Binary files a/docs/upgrades/packages-7.6.4/shopping-cart-collateral-items_address-book-default.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.4/templates_thingy-default-search-thing.wgpkg b/docs/upgrades/packages-7.6.4/templates_thingy-default-search-thing.wgpkg deleted file mode 100644 index 903651165..000000000 Binary files a/docs/upgrades/packages-7.6.4/templates_thingy-default-search-thing.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.5/root_import_account_inbox_default-inbox-error-template.wgpkg b/docs/upgrades/packages-7.6.5/root_import_account_inbox_default-inbox-error-template.wgpkg deleted file mode 100644 index e5aeb5166..000000000 Binary files a/docs/upgrades/packages-7.6.5/root_import_account_inbox_default-inbox-error-template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.5/root_import_account_inbox_default-invitation-confirmation-template.wgpkg b/docs/upgrades/packages-7.6.5/root_import_account_inbox_default-invitation-confirmation-template.wgpkg deleted file mode 100644 index 1562d668f..000000000 Binary files a/docs/upgrades/packages-7.6.5/root_import_account_inbox_default-invitation-confirmation-template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.5/root_import_account_inbox_default-invite-user-email-template.wgpkg b/docs/upgrades/packages-7.6.5/root_import_account_inbox_default-invite-user-email-template.wgpkg deleted file mode 100644 index 240c2c54e..000000000 Binary files a/docs/upgrades/packages-7.6.5/root_import_account_inbox_default-invite-user-email-template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.5/root_import_shelf-default.wgpkg b/docs/upgrades/packages-7.6.5/root_import_shelf-default.wgpkg deleted file mode 100644 index f4fac3d9a..000000000 Binary files a/docs/upgrades/packages-7.6.5/root_import_shelf-default.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.5/root_import_userlist_default-userlist.wgpkg b/docs/upgrades/packages-7.6.5/root_import_userlist_default-userlist.wgpkg deleted file mode 100644 index 61addbc0f..000000000 Binary files a/docs/upgrades/packages-7.6.5/root_import_userlist_default-userlist.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.5/root_import_userlist_userlist-with-multiple-search-keywords.wgpkg b/docs/upgrades/packages-7.6.5/root_import_userlist_userlist-with-multiple-search-keywords.wgpkg deleted file mode 100644 index c8084d8f5..000000000 Binary files a/docs/upgrades/packages-7.6.5/root_import_userlist_userlist-with-multiple-search-keywords.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.5/root_import_userlist_userlist-with-search-field-selection.wgpkg b/docs/upgrades/packages-7.6.5/root_import_userlist_userlist-with-search-field-selection.wgpkg deleted file mode 100644 index 9a96fba88..000000000 Binary files a/docs/upgrades/packages-7.6.5/root_import_userlist_userlist-with-search-field-selection.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.5/templates_thingy-default.wgpkg b/docs/upgrades/packages-7.6.5/templates_thingy-default.wgpkg deleted file mode 100644 index 108b1312c..000000000 Binary files a/docs/upgrades/packages-7.6.5/templates_thingy-default.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.6/default-matrix-edit-listing-template.wgpkg b/docs/upgrades/packages-7.6.6/default-matrix-edit-listing-template.wgpkg deleted file mode 100644 index 69f960986..000000000 Binary files a/docs/upgrades/packages-7.6.6/default-matrix-edit-listing-template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.6/matrix-default-compare-template.wgpkg b/docs/upgrades/packages-7.6.6/matrix-default-compare-template.wgpkg deleted file mode 100644 index 32c3fc99d..000000000 Binary files a/docs/upgrades/packages-7.6.6/matrix-default-compare-template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.6/matrix-default-view-template.wgpkg b/docs/upgrades/packages-7.6.6/matrix-default-view-template.wgpkg deleted file mode 100644 index 80fffdb7d..000000000 Binary files a/docs/upgrades/packages-7.6.6/matrix-default-view-template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.6/shopping-cart-collateral-items_address-default.wgpkg b/docs/upgrades/packages-7.6.6/shopping-cart-collateral-items_address-default.wgpkg deleted file mode 100644 index 94e7975e8..000000000 Binary files a/docs/upgrades/packages-7.6.6/shopping-cart-collateral-items_address-default.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.6/shopping-cart-collateral-items_itransact-credentials.wgpkg b/docs/upgrades/packages-7.6.6/shopping-cart-collateral-items_itransact-credentials.wgpkg deleted file mode 100644 index 0d23b1c56..000000000 Binary files a/docs/upgrades/packages-7.6.6/shopping-cart-collateral-items_itransact-credentials.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.6/syndicated_articles.wgpkg b/docs/upgrades/packages-7.6.6/syndicated_articles.wgpkg deleted file mode 100644 index 82d6147bf..000000000 Binary files a/docs/upgrades/packages-7.6.6/syndicated_articles.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.7/article-with-files.wgpkg b/docs/upgrades/packages-7.6.7/article-with-files.wgpkg deleted file mode 100644 index 7c3fff4e0..000000000 Binary files a/docs/upgrades/packages-7.6.7/article-with-files.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.7/center_image.wgpkg b/docs/upgrades/packages-7.6.7/center_image.wgpkg deleted file mode 100644 index 2daed1d79..000000000 Binary files a/docs/upgrades/packages-7.6.7/center_image.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.7/default-tt-template-row.wgpkg b/docs/upgrades/packages-7.6.7/default-tt-template-row.wgpkg deleted file mode 100644 index 72cb86fa0..000000000 Binary files a/docs/upgrades/packages-7.6.7/default-tt-template-row.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.7/default_product.wgpkg b/docs/upgrades/packages-7.6.7/default_product.wgpkg deleted file mode 100644 index 42b83603e..000000000 Binary files a/docs/upgrades/packages-7.6.7/default_product.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.7/left_align_image.wgpkg b/docs/upgrades/packages-7.6.7/left_align_image.wgpkg deleted file mode 100644 index e27f7c0a1..000000000 Binary files a/docs/upgrades/packages-7.6.7/left_align_image.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.7/linked_image_with_caption.wgpkg b/docs/upgrades/packages-7.6.7/linked_image_with_caption.wgpkg deleted file mode 100644 index 5e579c961..000000000 Binary files a/docs/upgrades/packages-7.6.7/linked_image_with_caption.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.7/matrix-default-detailed-listing.wgpkg b/docs/upgrades/packages-7.6.7/matrix-default-detailed-listing.wgpkg deleted file mode 100644 index 21f3fa91f..000000000 Binary files a/docs/upgrades/packages-7.6.7/matrix-default-detailed-listing.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.7/root_import_calendar-templates_default-calendar-print-list-view.wgpkg b/docs/upgrades/packages-7.6.7/root_import_calendar-templates_default-calendar-print-list-view.wgpkg deleted file mode 100644 index 1467d15a7..000000000 Binary files a/docs/upgrades/packages-7.6.7/root_import_calendar-templates_default-calendar-print-list-view.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.7/root_import_gallery-templates_default-gallery-delete-album.wgpkg b/docs/upgrades/packages-7.6.7/root_import_gallery-templates_default-gallery-delete-album.wgpkg deleted file mode 100644 index 20f738bfb..000000000 Binary files a/docs/upgrades/packages-7.6.7/root_import_gallery-templates_default-gallery-delete-album.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.7/root_import_gallery-templates_default-gallery-delete-file.wgpkg b/docs/upgrades/packages-7.6.7/root_import_gallery-templates_default-gallery-delete-file.wgpkg deleted file mode 100644 index 028f1bc1b..000000000 Binary files a/docs/upgrades/packages-7.6.7/root_import_gallery-templates_default-gallery-delete-file.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.7/root_import_gallery-templates_default-gallery-make-shortcut.wgpkg b/docs/upgrades/packages-7.6.7/root_import_gallery-templates_default-gallery-make-shortcut.wgpkg deleted file mode 100644 index ad6207f99..000000000 Binary files a/docs/upgrades/packages-7.6.7/root_import_gallery-templates_default-gallery-make-shortcut.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.7/root_import_shelf-default.wgpkg b/docs/upgrades/packages-7.6.7/root_import_shelf-default.wgpkg deleted file mode 100644 index 4817b8e68..000000000 Binary files a/docs/upgrades/packages-7.6.7/root_import_shelf-default.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.7/stockdatatmpl000000001.wgpkg b/docs/upgrades/packages-7.6.7/stockdatatmpl000000001.wgpkg deleted file mode 100644 index e5d0ccd7a..000000000 Binary files a/docs/upgrades/packages-7.6.7/stockdatatmpl000000001.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/admin_console.wgpkg b/docs/upgrades/packages-7.6.8/admin_console.wgpkg deleted file mode 100644 index 8030622eb..000000000 Binary files a/docs/upgrades/packages-7.6.8/admin_console.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/dashboard-default-view-template.wgpkg b/docs/upgrades/packages-7.6.8/dashboard-default-view-template.wgpkg deleted file mode 100644 index d514652aa..000000000 Binary files a/docs/upgrades/packages-7.6.8/dashboard-default-view-template.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/data_list.wgpkg b/docs/upgrades/packages-7.6.8/data_list.wgpkg deleted file mode 100644 index d495b45d5..000000000 Binary files a/docs/upgrades/packages-7.6.8/data_list.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/default-pm-resource-popup.wgpkg b/docs/upgrades/packages-7.6.8/default-pm-resource-popup.wgpkg deleted file mode 100644 index 8641d95ff..000000000 Binary files a/docs/upgrades/packages-7.6.8/default-pm-resource-popup.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/default-pm-template-dashboard.wgpkg b/docs/upgrades/packages-7.6.8/default-pm-template-dashboard.wgpkg deleted file mode 100644 index b6c452c9b..000000000 Binary files a/docs/upgrades/packages-7.6.8/default-pm-template-dashboard.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/default-wiki-page.wgpkg b/docs/upgrades/packages-7.6.8/default-wiki-page.wgpkg deleted file mode 100644 index 6868ce203..000000000 Binary files a/docs/upgrades/packages-7.6.8/default-wiki-page.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/default_forum_notification.wgpkg b/docs/upgrades/packages-7.6.8/default_forum_notification.wgpkg deleted file mode 100644 index 3c0cbbc11..000000000 Binary files a/docs/upgrades/packages-7.6.8/default_forum_notification.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/default_http_proxy.wgpkg b/docs/upgrades/packages-7.6.8/default_http_proxy.wgpkg deleted file mode 100644 index 01141a35e..000000000 Binary files a/docs/upgrades/packages-7.6.8/default_http_proxy.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/default_post_received.wgpkg b/docs/upgrades/packages-7.6.8/default_post_received.wgpkg deleted file mode 100644 index cce14ab70..000000000 Binary files a/docs/upgrades/packages-7.6.8/default_post_received.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/default_sql_report.wgpkg b/docs/upgrades/packages-7.6.8/default_sql_report.wgpkg deleted file mode 100644 index 2f8adc4a8..000000000 Binary files a/docs/upgrades/packages-7.6.8/default_sql_report.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/dropmenu.wgpkg b/docs/upgrades/packages-7.6.8/dropmenu.wgpkg deleted file mode 100644 index 17d607cbd..000000000 Binary files a/docs/upgrades/packages-7.6.8/dropmenu.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/job.wgpkg b/docs/upgrades/packages-7.6.8/job.wgpkg deleted file mode 100644 index ac5c937e4..000000000 Binary files a/docs/upgrades/packages-7.6.8/job.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/link.wgpkg b/docs/upgrades/packages-7.6.8/link.wgpkg deleted file mode 100644 index a5656a7d8..000000000 Binary files a/docs/upgrades/packages-7.6.8/link.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/matrix-default-detailed-listing.wgpkg b/docs/upgrades/packages-7.6.8/matrix-default-detailed-listing.wgpkg deleted file mode 100644 index 2377ffa7c..000000000 Binary files a/docs/upgrades/packages-7.6.8/matrix-default-detailed-listing.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/multisearchtmpl0000001.wgpkg b/docs/upgrades/packages-7.6.8/multisearchtmpl0000001.wgpkg deleted file mode 100644 index 706ba0f86..000000000 Binary files a/docs/upgrades/packages-7.6.8/multisearchtmpl0000001.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-day.wgpkg b/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-day.wgpkg deleted file mode 100644 index 57a3b2f0d..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-day.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-event.wgpkg b/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-event.wgpkg deleted file mode 100644 index df12f2849..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-event.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-month.wgpkg b/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-month.wgpkg deleted file mode 100644 index 9f3443297..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-month.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-search.wgpkg b/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-search.wgpkg deleted file mode 100644 index b618db5cd..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-search.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-week.wgpkg b/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-week.wgpkg deleted file mode 100644 index 43d4ed506..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_calendar-templates_default-calendar-week.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-add-archive.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-add-archive.wgpkg deleted file mode 100644 index 7fd1b457a..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-add-archive.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-album-rss.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-album-rss.wgpkg deleted file mode 100644 index 9729cb4c4..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-album-rss.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-delete-album.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-delete-album.wgpkg deleted file mode 100644 index 3e8705c4d..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-delete-album.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-delete-file.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-delete-file.wgpkg deleted file mode 100644 index 12afdecc3..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-delete-file.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-edit-album.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-edit-album.wgpkg deleted file mode 100644 index 5831788b5..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-edit-album.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-edit-comment.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-edit-comment.wgpkg deleted file mode 100644 index b6f8bc25d..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-edit-comment.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-edit-photo.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-edit-photo.wgpkg deleted file mode 100644 index cbf2f2be6..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-edit-photo.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-list-albums-rss.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-list-albums-rss.wgpkg deleted file mode 100644 index e67e68991..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-list-albums-rss.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-list-albums-view.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-list-albums-view.wgpkg deleted file mode 100644 index 5156873ce..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-list-albums-view.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-list-files-for-user-rss.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-list-files-for-user-rss.wgpkg deleted file mode 100644 index 918827670..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-list-files-for-user-rss.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-list-files-for-user.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-list-files-for-user.wgpkg deleted file mode 100644 index 284ac5198..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-list-files-for-user.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-make-shortcut.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-make-shortcut.wgpkg deleted file mode 100644 index 8466db39c..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-make-shortcut.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-search.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-search.wgpkg deleted file mode 100644 index 352a40d68..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-search.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-view-album-slideshow.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-view-album-slideshow.wgpkg deleted file mode 100644 index ebedcfe85..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-view-album-slideshow.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-view-album-thumbnails.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-view-album-thumbnails.wgpkg deleted file mode 100644 index 3d5f8afe3..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-view-album-thumbnails.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-view-album.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-view-album.wgpkg deleted file mode 100644 index ca987c8da..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-view-album.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-view-photo.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-view-photo.wgpkg deleted file mode 100644 index d08cf1077..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_default-gallery-view-photo.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_gallery.css.wgpkg b/docs/upgrades/packages-7.6.8/root_import_gallery-templates_gallery.css.wgpkg deleted file mode 100644 index 3b2874a3a..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_gallery-templates_gallery.css.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/root_import_survey_default-survey-edit.wgpkg b/docs/upgrades/packages-7.6.8/root_import_survey_default-survey-edit.wgpkg deleted file mode 100644 index 2d754cd8f..000000000 Binary files a/docs/upgrades/packages-7.6.8/root_import_survey_default-survey-edit.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/shopping-cart-collateral-items_itransact-credentials.wgpkg b/docs/upgrades/packages-7.6.8/shopping-cart-collateral-items_itransact-credentials.wgpkg deleted file mode 100644 index 0d23b1c56..000000000 Binary files a/docs/upgrades/packages-7.6.8/shopping-cart-collateral-items_itransact-credentials.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/stockdatatmpl000000002.wgpkg b/docs/upgrades/packages-7.6.8/stockdatatmpl000000002.wgpkg deleted file mode 100644 index 8eafbf1fc..000000000 Binary files a/docs/upgrades/packages-7.6.8/stockdatatmpl000000002.wgpkg and /dev/null differ diff --git a/docs/upgrades/packages-7.6.8/syndicated_articles.wgpkg b/docs/upgrades/packages-7.6.8/syndicated_articles.wgpkg deleted file mode 100644 index 116e389ba..000000000 Binary files a/docs/upgrades/packages-7.6.8/syndicated_articles.wgpkg and /dev/null differ diff --git a/docs/upgrades/upgrade_7.5.24-7.6.0.pl b/docs/upgrades/upgrade_7.5.24-7.6.0.pl deleted file mode 100644 index 524c76cf0..000000000 --- a/docs/upgrades/upgrade_7.5.24-7.6.0.pl +++ /dev/null @@ -1,716 +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::Sku::Product; -use WebGUI::Utility qw(isIn); - - -my $toVersion = '7.6.0'; -my $quiet; # this line required - - -my $session = start(); # this line required - -addUrlToAssetHistory ( $session ); ##This sub MUST GO FIRST -removeDoNothingOnDelete( $session ); -fixIsPublicOnTemplates ( $session ); -addSortOrderToFolder( $session ); -addLoginTimeStats( $session ); -addEMSBadgeTemplate ( $session ); -addCSPostReceivedTemplate ( $session ); -redirectChoice ($session); -badgePriceDates ($session); -addIsDefaultTemplates( $session ); -addAdHocMailGroups( $session ); -makeAdminConsolePluggable( $session ); -migrateAssetsToNewConfigFormat($session); -deleteAdminBarTemplates($session); -repairBrokenProductSkus($session); -removeUnusedTemplates($session); - -finish($session); # this line required - - -#---------------------------------------------------------------------------- -sub removeUnusedTemplates { - my $session = shift; - print "\tDeleting old unused templates... " unless $quiet; - foreach my $id (qw(PBtmpl0000000000000046 e-WvgcKROPCoHwiiHLktCg PBtmpl0000000000000034 AFdXZZmGnSKalNSobQMB5w)) { - my $asset = WebGUI::Asset->new($session, $id); - if (defined $asset && $asset->getChildCount == 0) { - $asset->purge; - } - } - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub deleteAdminBarTemplates { - my $session = shift; - print "\tDeleting AdminBar templates... " unless $quiet; - foreach my $id (qw(PBtmpl0000000000000090 Ov2ssJHwp_1eEWKlDyUKmg)) { - my $asset = WebGUI::Asset->newByDynamicClass($session, $id); - if (defined $asset) { - $asset->trash; - } - } - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub repairBrokenProductSkus { - my $session = shift; - print "\tRepairing broken Products that were imported... " unless $quiet; - my $getAProduct = WebGUI::Asset::Sku::Product->getIsa($session); - while (my $product = $getAProduct->()) { - COLLATERAL: foreach my $collateral (@{ $product->getAllCollateral('variantsJSON') }) { - next COLLATERAL unless exists $collateral->{sku}; - $collateral->{varSku} = $collateral->{sku}; - delete $collateral->{sku}; - $product->setCollateral('variantsJSON', 'variantId', $collateral->{variantId}, $collateral); - } - } - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub migrateAssetsToNewConfigFormat { - my $session = shift; - print "\tRestructuring asset configuration... " unless $quiet; - my $config = $session->config; - - # devs doing multiple upgrades - # the list has already been updated by a previous run - my $assetList = $config->get("assets"); - unless (ref $assetList eq "ARRAY") { - warn "ERROR: Looks like you've already run this upgrade.\n"; - return undef; - } - - # add categories - $config->set('assetCategories', { - basic => { - title => "^International(basic,Macro_AdminBar);", - uiLevel => 1, - }, - intranet => { - title => "^International(intranet,Macro_AdminBar);", - uiLevel => 5, - }, - shop => { - title => "^International(shop,Shop);", - uiLevel => 5, - }, - utilities => { - title => "^International(utilities,Macro_AdminBar);", - uiLevel => 9, - }, - community => { - title => "^International(community,Macro_AdminBar);", - uiLevel => 5, - }, - }); - - # deal with the old asset list - my $assetContainers = $config->get("assetContainers"); - $assetContainers = [] unless (ref $assetContainers eq "ARRAY"); - my $utilityAssets = $config->get("utilityAssets"); - $utilityAssets = [] unless (ref $utilityAssets eq "ARRAY"); - my @oldAssetList = (@$assetList, @$utilityAssets, @$assetContainers); - my %assets = ( - 'WebGUI::Asset::Wobject::Collaboration::Newsletter' => { - category => "community", - } - ); - foreach my $class (@oldAssetList) { - my %properties; - if (isIn($class, qw( - WebGUI::Asset::Wobject::Article - WebGUI::Asset::Wobject::Layout - WebGUI::Asset::Wobject::Folder - WebGUI::Asset::Wobject::Calendar - WebGUI::Asset::Wobject::Poll - WebGUI::Asset::Wobject::Search - WebGUI::Asset::FilePile - WebGUI::Asset::Snippet - WebGUI::Asset::Wobject::DataForm - ))) { - $properties{category} = 'basic'; - } - elsif (isIn($class, qw( - WebGUI::Asset::Wobject::Collaboration::Newsletter - WebGUI::Asset::Wobject::WikiMaster - WebGUI::Asset::Wobject::Collaboration - WebGUI::Asset::Wobject::Survey - WebGUI::Asset::Wobject::Gallery - WebGUI::Asset::Wobject::MessageBoard - WebGUI::Asset::Wobject::Matrix - ))) { - $properties{category} = 'community'; - } - elsif (isIn($class, qw( - WebGUI::Asset::Wobject::StockData - WebGUI::Asset::Wobject::Dashboard - WebGUI::Asset::Wobject::InOutBoard - WebGUI::Asset::Wobject::MultiSearch - WebGUI::Asset::Wobject::ProjectManager - WebGUI::Asset::Wobject::TimeTracking - WebGUI::Asset::Wobject::UserList - WebGUI::Asset::Wobject::WeatherData - WebGUI::Asset::Wobject::Thingy - ))) { - $properties{category} = 'intranet'; - } - elsif (isIn($class, qw( - WebGUI::Asset::Wobject::Bazaar - WebGUI::Asset::Wobject::EventManagementSystem - WebGUI::Asset::Wobject::Shelf - WebGUI::Asset::Sku::Product - WebGUI::Asset::Sku::FlatDiscount - WebGUI::Asset::Sku::Donation - WebGUI::Asset::Sku::Subscription - ))) { - $properties{category} = 'shop'; - } - elsif (isIn($class, qw( - WebGUI::Asset::Wobject::WSClient - WebGUI::Asset::Wobject::SQLReport - WebGUI::Asset::Wobject::SyndicatedContent - WebGUI::Asset::Redirect - WebGUI::Asset::Template - WebGUI::Asset::Wobject::Navigation - WebGUI::Asset::File - WebGUI::Asset::Wobject::HttpProxy - WebGUI::Asset::File::Image - WebGUI::Asset::File::ZipArchive - WebGUI::Asset::RichEdit - ))) { - $properties{category} = 'utilities'; - } - else { - # other assets listed but not in the core - $properties{category} = 'utilities'; - } - $assets{$class} = \%properties; - } - - # deal with containers - foreach my $class (@$assetContainers) { - $assets{$class}{isContainer} = 1; - } - - # deal with custom add privileges - my $addGroups = $config->get("assetAddPrivilege"); - if (ref $addGroups eq "HASH") { - foreach my $class (keys %{$addGroups}) { - $assets{$class}{addGroup} = $addGroups->{$class}; - } - } - - # deal with custom ui levels - my $uiLevels = $config->get("assetUiLevel"); - if (ref $uiLevels eq "HASH") { - foreach my $class (keys %{$addGroups}) { - $assets{$class}{uiLevel} = $uiLevels->{$class}; - } - } - - # deal with custom field ui levels - foreach my $class (keys %assets) { - my $directive =~ s/::/_/g; - $directive .= '_uiLevel'; - my $value = $config->get($directive); - if (ref $value eq "HASH") { - foreach my $field (keys %{$value}) { - $assets{$class}{fields}{$field}{uiLevel} = $value->{$field}; - } - $config->delete($directive); - } - } - - # write the file - $config->delete('assetContainers'); - $config->delete('utilityAssets'); - $config->delete("assetUiLevel"); - $config->delete("assetAddPrivilege"); - $config->set("assets",\%assets); - - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub makeAdminConsolePluggable { - my $session = shift; - print "\tMaking admin console pluggable... " unless $quiet; - $session->config->set("adminConsole",{ - "spectre" => { - title => "^International(spectre,Spectre);", - icon => "spectre.gif", - url => "^PageUrl(\"\",op=spectreStatus);", - uiLevel => 9, - groupSetting => "groupIdAdminSpectre" - }, - "assets" => { - title => "^International(assets,Asset);", - icon => "assets.gif", - url => "^PageUrl(\"\",op=assetManager);", - uiLevel => 5, - group => "12" - }, - "versions" => { - title => "^International(version tags,VersionTag);", - icon => "versionTags.gif", - url => "^PageUrl(\"\",op=manageVersions);", - uiLevel => 7, - groupSetting => "groupIdAdminVersionTag" - }, - "workflow" => { - title => "^International(topicName,Workflow);", - icon => "workflow.gif", - url => "^PageUrl(\"\",manageWorkflows);", - uiLevel => 7, - groupSetting => "groupIdAdminWorkflow" - }, - "adSpace" => { - title => "^International(topicName,AdSpace);", - icon => "advertising.gif", - url => "^PageUrl(\"\",op=manageAdSpaces);", - uiLevel => 5, - groupSetting => "groupIdAdminAdSpace" - }, - "cron" => { - title => "^International(topicName,Workflow_Cron);", - icon => "cron.gif", - url => "^PageUrl(\"\",op=manageCron);", - uiLevel => 9, - groupSetting => "groupIdAdminCron" - }, - "users" => { - title => "^International(149,WebGUI);", - icon => "users.gif", - url => "^PageUrl(\"\",op=listUsers);", - uiLevel => 5, - groupSetting => "groupIdAdminUser" - }, - "clipboard" => { - title => "^International(948,WebGUI);", - icon => "clipboard.gif", - url => "^PageUrl(\"\",func=manageClipboard);", - uiLevel => 5, - group => "12" - }, - "trash" => { - title => "^International(trash,WebGUI);", - icon => "trash.gif", - url => "^PageUrl(\"\",func=manageTrash);", - uiLevel => 5, - group => "12" - }, - "databases" => { - title => "^International(databases,WebGUI);", - icon => "databases.gif", - url => "^PageUrl(\"\",op=listDatabaseLinks);", - uiLevel => 9, - groupSetting => "groupIdAdminDatabaseLink" - }, - "ldapconnections" => { - title => "^International(ldapconnections,AuthLDAP);", - icon => "ldap.gif", - url => "^PageUrl(\"\",op=listLDAPLinks);", - uiLevel => 9, - groupSetting => "groupIdAdminLDAPLink" - }, - "groups" => { - title => "^International(89,WebGUI);", - icon => "groups.gif", - url => "^PageUrl(\"\",op=listGroups);", - uiLevel => 5, - groupSetting => "groupIdAdminGroup" - }, - "settings" => { - title => "^International(settings,WebGUI);", - icon => "settings.gif", - url => "^PageUrl(\"\",op=editSettings);", - uiLevel => 5, - group => "3" - }, - "help" => { - title => "^International(help,WebGUI);", - icon => "help.gif", - url => "^PageUrl(\"\",op=viewHelpIndex);", - uiLevel => 1, - groupSetting => "groupIdAdminHelp" - }, - "statistics" => { - title => "^International(437,WebGUI);", - icon => "statistics.gif", - url => "^PageUrl(\"\",op=viewStatistics);", - uiLevel => 1, - groupSetting => "groupIdAdminStatistics" - }, - "contentProfiling" => { - title => "^International(content profiling,Asset);", - icon => "contentProfiling.gif", - url => "^PageUrl(\"\",func=manageMetaData);", - uiLevel => 5, - group => "4" - }, - "contentFilters" => { - title => "^International(content filters,WebGUI);", - icon => "contentFilters.gif", - url => "^PageUrl(\"\",op=listReplacements);", - uiLevel => 3, - groupSetting => "groupIdAdminReplacements" - }, - "userProfiling" => { - title => "^International(user profiling,WebGUIProfile);", - icon => "userProfiling.gif", - url => "^PageUrl(\"\",op=editProfileSettings);", - uiLevel => 5, - groupSetting => "groupIdAdminProfileSettings" - }, - "loginHistory" => { - title => "^International(426,WebGUI);", - icon => "loginHistory.gif", - url => "^PageUrl(\"\",op=viewLoginHistory);", - uiLevel => 5, - groupSetting => "groupIdAdminLoginHistory" - }, - "inbox" => { - title => "^International(159,WebGUI);", - icon => "inbox.gif", - url => "^PageUrl(\"\",op=viewInbox);", - uiLevel => 1, - group => "2" - }, - "activeSessions" => { - title => "^International(425,WebGUI);", - icon => "activeSessions.gif", - url => "^PageUrl(\"\",op=viewActiveSessions);", - uiLevel => 5, - groupSetting => "groupIdAdminActiveSessions" - }, - "shop" => { - title => "^International(shop,Shop);", - icon => "shop.gif", - url => "^PageUrl(\"\",shop=admin);", - uiLevel => 5, - groupSetting => 'groupIdAdminCommerce' - }, - "cache" => { - title => "^International(manage cache,WebGUI);", - icon => "cache.gif", - url => "^PageUrl(\"\",op=manageCache);", - uiLevel => 5, - groupSetting => "groupIdAdminCache" - }, - "graphics" => { - title => "^International(manage graphics,Graphics);", - icon => "graphics.gif", - url => "^PageUrl(\"\",op=listGraphicsOptions);", - uiLevel => 5, - groupSetting => "groupIdAdminGraphics" - }, - }); - print "DONE!\n" unless $quiet; -} - - -#---------------------------------------------------------------------------- -# Add the "isDefault" flag and set it for the right templates -sub addIsDefaultTemplates { - my $session = shift; - print "\tAdding warning when editing default templates... " unless $quiet; - $session->db->write( "ALTER TABLE template ADD COLUMN isDefault INT(1) DEFAULT 0" ); - print "DONE!\n" unless $quiet; -} - -sub setDefaultTemplates { - my $session = shift; - print "\tUpdating default templates to show warning... " unless $quiet; - my $defaultTemplates =[ - '-ANLpoTEP-n4POAdRxCzRw','05FpjceLYhq4csF1Kww1KQ','0X4Q3tBWUb_thsVbsYz9xQ', - '2gtFt7c0qAFNU3BG_uvNvg','2rC4ErZ3c77OJzJm7O5s3w','3womoo7Teyy2YKFa25-MZg', - '63ix2-hU0FchXGIWkG3tow','6X-7Twabn5KKO_AbgK3PEw','7JCTAiu1U_bT9ldr655Blw', - 'BMybD3cEnmXVk2wQ_qEsRQ','CalendarDay00000000001','CalendarEvent000000001', - 'CalendarEventEdit00001','CalendarMonth000000001','CalendarPrintDay000001', - 'CalendarPrintEvent0001','CalendarPrintMonth0001','CalendarPrintWeek00001', - 'CalendarSearch00000001','CalendarWeek0000000001','DPUROtmpl0000000000001', - 'DashboardViewTmpl00001','EBlxJpZQ9o-8VBOaGQbChA','GNvjCFQWjY2AF2uf0aCM8Q', - 'IOB0000000000000000001','IOB0000000000000000002','KAMdiUdJykjN02CPHpyZOw', - 'MultiSearchTmpl0000001','OOyMH33plAy6oCj_QWrxtg','OkphOEdaSGTXnFGhK4GT5A', - 'OxJWQgnGsgyGohP2L3zJPQ','PBnav00000000000bullet','PBnav00000000indentnav', - 'PBnav000000style01lvl2','PBtmpl0000000000000001','PBtmpl0000000000000002', - 'PBtmpl0000000000000004','PBtmpl0000000000000005','PBtmpl0000000000000006', - 'PBtmpl0000000000000010','PBtmpl0000000000000011','PBtmpl0000000000000012', - 'PBtmpl0000000000000013','PBtmpl0000000000000014','PBtmpl0000000000000020', - 'PBtmpl0000000000000021','PBtmpl0000000000000024','PBtmpl0000000000000026', - 'PBtmpl0000000000000027','PBtmpl0000000000000029','PBtmpl0000000000000031', - 'PBtmpl0000000000000032','PBtmpl0000000000000033','PBtmpl0000000000000036', - 'PBtmpl0000000000000037','PBtmpl0000000000000038','PBtmpl0000000000000039', - 'PBtmpl0000000000000040','PBtmpl0000000000000041','PBtmpl0000000000000042', - 'PBtmpl0000000000000043','PBtmpl0000000000000044','PBtmpl0000000000000045', - 'PBtmpl0000000000000047','PBtmpl0000000000000048','PBtmpl0000000000000051', - 'PBtmpl0000000000000052','PBtmpl0000000000000053','PBtmpl0000000000000054', - 'PBtmpl0000000000000055','PBtmpl0000000000000056','PBtmpl0000000000000057', - 'PBtmpl0000000000000059','PBtmpl0000000000000060','PBtmpl0000000000000061', - 'PBtmpl0000000000000062','PBtmpl0000000000000063','PBtmpl0000000000000064', - 'PBtmpl0000000000000065','PBtmpl0000000000000066','PBtmpl0000000000000067', - 'PBtmpl0000000000000068','PBtmpl0000000000000069','PBtmpl0000000000000077', - 'PBtmpl0000000000000078','PBtmpl0000000000000079','PBtmpl0000000000000080', - 'PBtmpl0000000000000081','PBtmpl0000000000000082','PBtmpl0000000000000083', - 'PBtmpl0000000000000084','PBtmpl0000000000000085','PBtmpl0000000000000088', - 'PBtmpl0000000000000090','PBtmpl0000000000000091','PBtmpl0000000000000092', - 'PBtmpl0000000000000093','PBtmpl0000000000000094','PBtmpl0000000000000097', - 'PBtmpl0000000000000098','PBtmpl0000000000000099','PBtmpl0000000000000100', - 'PBtmpl0000000000000101','PBtmpl0000000000000103','PBtmpl0000000000000104', - 'PBtmpl0000000000000107','PBtmpl0000000000000108','PBtmpl0000000000000109', - 'PBtmpl0000000000000111','PBtmpl0000000000000112','PBtmpl0000000000000113', - 'PBtmpl0000000000000114','PBtmpl0000000000000115','PBtmpl0000000000000116', - 'PBtmpl0000000000000117','PBtmpl0000000000000118','PBtmpl0000000000000121', - 'PBtmpl0000000000000122','PBtmpl0000000000000123','PBtmpl0000000000000124', - 'PBtmpl0000000000000125','PBtmpl0000000000000128','PBtmpl0000000000000129', - 'PBtmpl0000000000000130','PBtmpl0000000000000131','PBtmpl0000000000000132', - 'PBtmpl0000000000000133','PBtmpl0000000000000134','PBtmpl0000000000000135', - 'PBtmpl0000000000000136','PBtmpl0000000000000137','PBtmpl0000000000000140', - 'PBtmpl0000000000000141','PBtmpl0000000000000142','PBtmpl0000000000000200', - 'PBtmpl0000000000000205','PBtmpl0000000000000206','PBtmpl0000000000000207', - 'PBtmpl0000000000000208','PBtmpl0000000000000209','PBtmpl0000000000000210', - 'PBtmpl000000000table54','PBtmpl00000000table094','PBtmpl00000000table109', - 'PBtmpl00000000table118','PBtmpl00000000table125','PBtmpl00000000table131', - 'PBtmpl00000000table135','PBtmpl00000userInvite1','PBtmpl0userInviteEmail', - 'PBtmplBlankStyle000001','PBtmplHelp000000000001','PBtmplPrivateMessage01', - 'ProjectManagerTMPL0001','ProjectManagerTMPL0002','ProjectManagerTMPL0003', - 'ProjectManagerTMPL0004','ProjectManagerTMPL0005','ProjectManagerTMPL0006', - 'PsFn7dJt4wMwBa8hiE3hOA','SQLReportDownload0001','StockDataTMPL000000001', - 'StockDataTMPL000000002','TEId5V-jEvUULsZA0wuRuA','ThingyTmpl000000000001', - 'ThingyTmpl000000000002','ThingyTmpl000000000003','ThingyTmpl000000000004', - 'TimeTrackingTMPL000001','TimeTrackingTMPL000002','TimeTrackingTMPL000003', - 'UTNFeV7B_aSCRmmaFCq4Vw','UserListTmpl0000001','UserListTmpl0000002', - 'UserListTmpl0000003','WVtmpl0000000000000001','WeatherDataTmpl0000001', - 'WikiFrontTmpl000000001','WikiKeyword00000000001','WikiMPTmpl000000000001', - 'WikiPHTmpl000000000001','WikiPageEditTmpl000001','WikiPageTmpl0000000001', - 'WikiRCTmpl000000000001','WikiSearchTmpl00000001','XNd7a_g_cTvJVYrVHcx2Mw', - 'ZipArchiveTMPL00000001','aIpCmr9Hi__vgdZnDTz1jw','azCqD0IjdQSlM3ar29k5Sg', - 'bPz1yk6Y9uwMDMBcmMsSCg','eqb9sWjFEVq0yHunGV8IGw','g8W53Pd71uHB9pxaXhWf_A', - 'ilu5BrM-VGaOsec9Lm7M6Q','jME5BEDYVDlBZ8jIQA9-jQ','kj3b-X3i6zRKnhLb4ZiCLw', - 'm3IbBavqzuKDd2PGGhKPlA','mM3bjP_iG9sv5nQb4S17tQ','managefriends_________', - 'matrixtmpl000000000001','matrixtmpl000000000002','matrixtmpl000000000003', - 'matrixtmpl000000000004','matrixtmpl000000000005','nFen0xjkZn8WkpM93C9ceQ', - 'newsletter000000000001','newslettercs0000000001','newslettersubscrip0001', - 'pbtmpl0000000000000220','pbtmpl0000000000000221','q5O62aH4pjUXsrQR3Pq4lw', - 'stevecoolmenu000000001','stevenav00000000000001','stevestyle000000000001', - 'stevestyle000000000002','stevestyle000000000003','uRL9qtk7Rb0YRJ41LmHOJw', - 'vrKXEtluIhbmAS9xmPukDA','yBwydfooiLvhEFawJb0VTQ','zcX-wIUct0S_np14xxOA-A' - ]; - - for my $assetId ( @{ $defaultTemplates } ) { - my $asset = WebGUI::Asset::Template->new( $session, $assetId ); - if ( !$asset ) { - print "\n\t\tCouldn't instanciate default asset '$assetId', skipping..."; - next; - } - else { - $asset->update( { isDefault => 1 } ); - } - } - - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub badgePriceDates { - my $session = shift; - print "\tAllowing badges to have multiple prices set by date." unless $quiet; - my $db = $session->db; - $db->write("alter table EMSBadge add column earlyBirdPrice float not null default 0.0"); - $db->write("alter table EMSBadge add column earlyBirdPriceEndDate bigint"); - $db->write("alter table EMSBadge add column preRegistrationPrice float not null default 0.0"); - $db->write("alter table EMSBadge add column preRegistrationPriceEndDate bigint"); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub fixIsPublicOnTemplates { - my $session = shift; - print "\tFixing 'is public' on templates" unless $quiet; - $session->db->write('UPDATE `assetIndex` SET `isPublic` = 0 WHERE assetId IN (SELECT assetId FROM asset WHERE className IN ("WebGUI::Asset::RichEdit", "WebGUI::Asset::Snippet", "WebGUI::Asset::Template") )'); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addEMSBadgeTemplate { - my $session = shift; - print "\tAdding EMS Badge Template... " unless $quiet; - $session->db->write('ALTER TABLE EMSBadge ADD COLUMN templateId VARCHAR(22) BINARY NOT NULL'); - print "Done.\n" unless $quiet; -} -#---------------------------------------------------------------------------- -sub addCSPostReceivedTemplate { - my $session = shift; - print "\tAdding Post Received Template ID field for CS..." unless $quiet; - $session->db->write("ALTER TABLE Collaboration ADD COLUMN postReceivedTemplateId VARCHAR(22) DEFAULT 'default_post_received';"); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addUrlToAssetHistory { - my $session = shift; - print "\tAdding URL column to assetHistory" unless $quiet; - $session->db->write('ALTER TABLE assetHistory ADD COLUMN url VARCHAR(255)'); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addSortOrderToFolder { - my $session = shift; - print "\tAdding Sort Order to Folder... " unless $quiet; - $session->db->write( 'alter table Folder add column sortOrder ENUM("ASC","DESC") DEFAULT "ASC"' ); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addLoginTimeStats { - my $session = shift; - print "\tAdding login time statistics... " unless $quiet; - $session->db->write( "alter table userLoginLog add column sessionId varchar(22)" ); - $session->db->write( "alter table userLoginLog add column lastPageViewed int(11)" ); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub removeDoNothingOnDelete { - my $session = shift; - print "\tRemoving 'Do Nothing On Delete workflow if not customized... " unless $quiet; - my $workflow = WebGUI::Workflow->new($session, 'DPWwf20061030000000001'); - if ($workflow) { - my $activities = $workflow->getActivities; - if (@$activities == 0) { - # safe to delete. - for my $setting (qw(trashWorkflow purgeWorkflow changeUrlWorkflow)) { - my $setValue = $session->setting->get($setting); - if ($setValue eq 'DPWwf20061030000000001') { - $session->setting->set($setting, undef); - } - } - $workflow->delete; - } - } - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub redirectChoice { - my $session = shift; - print "\tGiving a user choice about which type of redirect they'd like to perform... " unless $quiet; - $session->db->write("alter table redirect add column redirectType int not null default 302"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addAdHocMailGroups { - my $session = shift; - print "\tAdding AdHocMailGroups to Groups.. " unless $quiet; - $session->db->write("alter table groups add column isAdHocMailGroup tinyint(4) not null default 0"); - 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 = WebGUI::Asset->getImportNode($session)->importPackage( $storage ); - - # Make the package not a package anymore - $package->update({ isPackage => 0 }); - - # Set the default flag for templates added - my $assetIds - = $package->getLineage( ['self','descendants'], { - includeOnlyClasses => [ 'WebGUI::Asset::Template' ], - } ); - 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; - } - $asset->update( { isDefault => 1 } ); - } - - 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); - setDefaultTemplates( $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; - 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 ); - } -} - diff --git a/docs/upgrades/upgrade_7.5.40-7.6.10.pl b/docs/upgrades/upgrade_7.5.40-7.6.10.pl deleted file mode 100644 index 07b804ed4..000000000 --- a/docs/upgrades/upgrade_7.5.40-7.6.10.pl +++ /dev/null @@ -1,1876 +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 JSON; -use WebGUI::Asset::File::GalleryFile; -use WebGUI::Asset::Sku::Product; -use WebGUI::Asset::Template; -use WebGUI::Asset::Wobject::Collaboration; -use WebGUI::Asset::Wobject::GalleryAlbum; -use WebGUI::Asset::Wobject::Survey::ResponseJSON; -use WebGUI::Asset::Wobject::Survey::SurveyJSON; -use WebGUI::Asset::Wobject::Survey; -use WebGUI::Asset; -use WebGUI::ProfileField; -use WebGUI::Session; -use WebGUI::Shop::Pay; -use WebGUI::Shop::PayDriver; -use WebGUI::Storage; -use WebGUI::Utility qw(isIn); - -my $toVersion = '7.6.10'; -my $quiet; # this line required - -# in case we need to output UTF-8 chars -binmode STDOUT, ':utf8'; - -my $session = start(); # this line required - -addUrlToAssetHistory ( $session ); ##This sub MUST GO FIRST -removeDoNothingOnDelete( $session ); -fixIsPublicOnTemplates ( $session ); -addSortOrderToFolder( $session ); -addLoginTimeStats( $session ); -addCSPostReceivedTemplate ( $session ); -redirectChoice ($session); -badgePriceDates ($session); -addIsDefaultTemplates( $session ); -addAdHocMailGroups( $session ); -makeAdminConsolePluggable( $session ); -migrateAssetsToNewConfigFormat($session); -deleteAdminBarTemplates($session); -repairBrokenProductSkus($session); -removeUnusedTemplates($session); -addExportExtensionsToConfigFile($session); -addThingyColumns( $session ); -addCommentsAspect( $session ); -addCommentsAspectToWiki( $session ); -addAssetDiscoveryService( $session ); -repairManageWorkflows($session); -addPreTextToThingyFields($session); -updateAddressBook($session); -changeDefaultPaginationInSearch($session); -upgradeToYui26($session); -addUsersOnlineMacro($session); -addProfileExtrasField($session); -addWorkflowToDataform( $session ); -installDataTableAsset( $session ); -installAjaxI18N( $session ); -installSiteIndex( $session ); -createLastUpdatedField($session); -createFieldShowOnline($session); -upgradeSyndicatedContentTemplates($session); -removeCaseInsensitiveConfig($session); -addVersionTagMode($session); -migrateSurvey($session); -addPosMode($session); -fixFriendsGroups( $session ); -upgradeAccount( $session ); -addExtendedProfilePrivileges( $session ); -addStorageUrlMacro( $session ); -addRecurringSubscriptionSwitch( $session ); -upgradeMatrix( $session ); -fixAccountMisspellings( $session ); -removeTemplateHeadBlock( $session ); -updateMatrixListingScores( $session ); -removeSqlForm( $session ); -addMatrixEditListingTemplate( $session ); -reFixAccountMisspellings($session); -addRichEditorInboxSetting( $session ); -alterSurveyJSONFields($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; -#} - -#Change the Survey and Survey_response tables' json fields to longText instead of longBlob to get back non-binary text -#---------------------------------------------------------------------------- -sub alterSurveyJSONFields{ - my $session = shift; - $session->db->write("alter table Survey modify surveyJSON longText"); - $session->db->write("alter table Survey_response modify responseJSON longText"); -} - -#---------------------------------------------------------------------------- -# Add ability to select which rich editor for messages between users -sub addRichEditorInboxSetting { - my $session = shift; - print "\tAdding rich editor selection to Inbox... " unless $quiet; - - $session->setting->add("inboxRichEditId","PBrichedit000000000001"); - - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -#Describe what our function does -sub reFixAccountMisspellings { - my $session = shift; - my $setting = $session->setting; - print "\tFix misspellings in Account settings... " unless $quiet; - # and here's our code - $setting->add("profileViewTemplateId", $setting->get('profileViewTempalteId') ); - $setting->add("profileErrorTemplateId", $setting->get('profileErrorTempalteId') ); - $setting->add("inboxLayoutTemplateId", $setting->get('inboxLayoutTempalteId') ); - $setting->add("friendsLayoutTemplateId", $setting->get('friendsLayoutTempalteId')); - $setting->remove("profileViewTempalteId"); - $setting->remove("profileErrorTempalteId"); - $setting->remove("inboxLayoutTempalteId"); - $setting->remove("friendsLayoutTempalteId"); - print "DONE!\n" unless $quiet; -} - -# Add editListingTemplate property to Matrix -sub addMatrixEditListingTemplate { - my $session = shift; - print "\tAdd editListingTemplate property to Matrix... " unless $quiet; - $session->db->write("alter table Matrix add editListingTemplateId char(22)"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- - -sub removeSqlForm { - my $session = shift; - print "\tOptionally removing Web Services Client...\n" unless $quiet; - my $db = $session->db; - unless ($db->quickScalar("select count(*) from asset where className='WebGUI::Asset::Wobject::WSClient'")) { - print "\t\tNot using it, so we're uninstalling it.\n" unless $quiet; - $session->config->delete("assets/WebGUI::Asset::Wobject::WSClient"); - my @ids = $db->buildArray("select distinct assetId from template where namespace = 'WSClient'"); - push @ids, qw(5YAbuwiVFUx-z8hcOAnsdQ); - foreach my $id (@ids) { - my $asset = WebGUI::Asset->newByDynamicClass($session, $id); - if (defined $asset) { - $asset->purge; - } - } - $db->write("drop table WSClient"); - } - else { - print "\t\tThis site uses Web Services Client, so we won't uninstall it.\n" unless $quiet; - } -} - -#---------------------------------------------------------------------------- - -sub updateMatrixListingScores { - my $session = shift; - print "\tUpdating score for every MatrixListing asset... " unless $quiet; - my $matrixListings = WebGUI::Asset->getRoot($session)->getLineage(['descendants'], - { - statesToInclude => ['published','trash','clipboard','clipboard-limbo','trash-limbo'], - statusToInclude => ['pending','approved','deleted','archived'], - includeOnlyClasses => ['WebGUI::Asset::MatrixListing'], - returnObjects => 1, - }); - - for my $matrixListing (@{$matrixListings}) - { - next unless defined $matrixListing; - my $score = $session->db->quickScalar("select sum(value) from MatrixListing_attribute - left join Matrix_attribute using(attributeId) - where matrixListingId = ? and fieldType = 'MatrixCompare'", - [$matrixListing->getId]); - $matrixListing->update({score => $score}); - } - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- - -sub removeTemplateHeadBlock { - my $session = shift; - print "\tMerging Template head blocks into the Extra Head Tags field... " unless $quiet; - my $sth = $session->db->prepare('select assetId, revisionDate, headBlock from template'); - $sth->execute(); - TMPL: while (my $templateData = $sth->hashRef) { - my $template = WebGUI::Asset->new($session, - $templateData->{assetId}, 'WebGUI::Asset::Template', - $templateData->{revisionDate}, - ); - next TMPL unless defined $template; - if ($template->get('namespace') eq 'style') { - $template->update({ - extraHeadTags => '', - }); - } - else { - $template->update({ - extraHeadTags => $template->getExtraHeadTags . $templateData->{headBlock}, - }); - } - } - $session->db->write('ALTER TABLE template DROP COLUMN headBlock'); - # and here's our code - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -#Describe what our function does -sub fixAccountMisspellings { - my $session = shift; - my $setting = $session->setting; - print "\tFix misspellings in Account settings... " unless $quiet; - # and here's our code - $setting->add("profileViewTemplateId", $setting->get('profileViewTempalteId') ); - $setting->add("profileErrorTemplateId", $setting->get('profileErrorTempalteId') ); - $setting->add("inboxLayoutTemplateId", $setting->get('inboxLayoutTempalteId') ); - $setting->add("friendsLayoutTemplateId", $setting->get('friendsLayoutTempalteId')); - $setting->remove("profileViewTemplateId"); - $setting->remove("profileErrorTemplateId"); - $setting->remove("inboxLayoutTemplateId"); - $setting->remove("friendsLayoutTemplateId"); - print "DONE!\n" unless $quiet; -} - -sub upgradeMatrix { - my $session = shift; - print "\tUpgrading matrix assets... \n" unless $quiet; - my $db = $session->db; - $db->write("alter table Matrix drop column groupToRate, drop column privilegedGroup, - drop column ratingTimeout, drop column ratingTimeoutPrivileged, drop column ratingDetailTemplateId, - drop column visitorCacheTimeout"); - $db->write("alter table Matrix add column defaultSort char(22) not null default 'score', - add column compareColorNo char(22) default '#ffaaaa', - add column compareColorLimited char(22) not null default '#ffffaa', - add column compareColorCostsExtra char(22) not null default '#ffffaa', - add column compareColorFreeAddOn char(22) not null default '#ffffaa', - add column compareColorYes char(22) not null default '#aaffaa', - add column submissionApprovalWorkflowId char(22) not null, - add column ratingsDuration int(11) not null default 7776000"); - $db->write("create table MatrixListing ( - assetId char(22) binary not null, - revisionDate bigint not null, - screenshots char(22), - description text, - version char(255), - views int(11), - compares int(11), - clicks int(11), - viewsLastIp char(255), - comparesLastIp char(255), - clicksLastIp char(255), - lastUpdated int(11), - maintainer char(22), - manufacturerName char(255), - manufacturerURL char(255), - productURL char(255), - score int(11), - primary key (assetId, revisionDate) - )"); - $db->write("create table MatrixListing_attribute ( - matrixId char(22) not null, - matrixListingId char(22) not null, - attributeId char(22) not null, - value char(255), - primary key (matrixId, matrixListingId, attributeId) - )"); - $db->write("alter table Matrix_rating rename MatrixListing_rating"); - $db->write("alter table Matrix_ratingSummary rename MatrixListing_ratingSummary"); - $db->write("alter table Matrix_field rename Matrix_attribute"); - $db->write("alter table Matrix_attribute drop column name"); - $db->write("alter table Matrix_attribute change label name char(255)"); - $db->write("alter table Matrix_attribute add column options text"); - $db->write("alter table Matrix_attribute change fieldType fieldType char(255) not null default 'MatrixCompare'"); - $db->write("alter table Matrix_attribute change fieldId attributeId char(22) not null"); - $db->write("update Matrix_attribute set fieldType = 'MatrixCompare' where fieldType = 'GoodBad'"); - $db->write("update Matrix_attribute set fieldType = 'Combo' where fieldType != 'MatrixCompare'"); - $db->write("update Matrix_listingData set value = 0 where value = 'No'"); - $db->write("update Matrix_listingData set value = 1 where value = 'Limited'"); - $db->write("update Matrix_listingData set value = 2 where value = 'Costs Extra'"); - $db->write("update Matrix_listingData set value = 3 where value = 'Free Add On'"); - $db->write("update Matrix_listingData set value = 4 where value = 'Yes'"); - - # get existing Matrix wobjects - my $matrices = WebGUI::Asset->getRoot($session)->getLineage(['descendants'], - { - statesToInclude => ['published','trash','clipboard','clipboard-limbo','trash-limbo'], - statusToInclude => ['pending','approved','deleted','archived'], - includeOnlyClasses => ['WebGUI::Asset::Wobject::Matrix'], - returnObjects => 1, - }); - - for my $matrix (@{$matrices}) - { - next unless defined $matrix; - # If the asset is in the trash, ignore the migration, we're just going - # to purge it. - if ($matrix->get("state") =~ m/trash/) { - $matrix->purge; - next; - } - - # get listings for each Matrix - my @listings = @{ $db->buildArrayRefOfHashRefs("select * from Matrix_listing where assetId =?",[$matrix->getId]) }; - foreach my $listing (@listings){ - # add MatrixListing asset for each listing - print "Migrating listing: ".$listing->{productName}."\n" unless $quiet;; - $listing->{className} = 'WebGUI::Asset::MatrixListing'; - $listing->{assetId} = 'new'; - $listing->{title} = $listing->{productName}; - $listing->{version} = $listing->{versionNumber}; - $listing->{screenshots} = $listing->{storageId}; - $listing->{ownerUserId} = $listing->{maintainerId}; - $listing->{productURL} = $listing->{productUrl}; - $listing->{manufacturerURL} = $listing->{manufacturerUrl}; - my $newMatrixListing = $matrix->addChild($listing,undef,undef,{skipAutoCommitWorkflows=>1}); - # get listingData for each listing - my $listingData = $db->buildArrayRefOfHashRefs("select * from Matrix_listingData where listingId =?",[$listing->{listingId}]); - # add listing attribute for each listing field - foreach my $attribute (@{$listingData}){ - $db->write("insert into MatrixListing_attribute (matrixId, matrixListingId, attributeId, value) values - (?,?,?,?)",[$matrix->getId,$newMatrixListing->getId,$attribute->{fieldId},$attribute->{value}]); - } - # update listingIds to MatrixListingIds in MatrixListing_rating/Summary tables - $db->write("update MatrixListing_rating set listingId = ? where listingId =?", - [$newMatrixListing->getId,$listing->{listingId}]); - $db->write("update MatrixListing_ratingSummary set listingId = ? where listingId =?", - [$newMatrixListing->getId,$listing->{listingId}]); - # migrate comments - if($listing->{forumId}){ - my $forum = WebGUI::Asset::Wobject::Collaboration->new($session, $listing->{forumId}); - if ( defined $forum ) { - my @comments = @{ $forum->getLineage(['descendants'], { - includeOnlyClasses => ["WebGUI::Asset::Post", "WebGUI::Asset::Post::Thread"], - returnObjects => 1, - }) }; - foreach my $comment (@comments){ - # add comment - my $content = $comment->get('content'); - $content =~ s/^
//; - $content =~ s/<\/p>//; - my $ownerUser = WebGUI::User->new($session,$comment->get('ownerUserId')); - $newMatrixListing->addComment($content,0,$ownerUser); - } - } - } - } - } - $db->write("drop table Matrix_listing"); - $db->write("drop table Matrix_listingData"); - print "\tDONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addExtendedProfilePrivileges { - my $session = shift; - - print qq{\tExtending User Profile Privileges..} if !$quiet; - - my $userProfDesc = $session->db->buildHashRef('describe userProfileData'); - if(grep { $_ =~ /^wg_privacySettings/ } keys %{$userProfDesc}) { - $session->db->write("alter table userProfileData drop column wg_privacySettings"); - } - $session->db->write("alter table userProfileData add wg_privacySettings longtext"); - - my $fields = WebGUI::ProfileField->getFields($session); - - my $users = $session->db->buildArrayRef("select userId from users"); - foreach my $userId (@{$users}) { - my $hash = {}; - foreach my $field (@{$fields}) { - if($field->getId eq "publicEmail") { - my $u = WebGUI::User->new($session,$userId); - $hash->{$field->getId} = $u->profileField("publicEmail") ? "all" : "none"; - next; - } - $hash->{$field->getId} = $field->isViewable ? "all" : "none"; - } - my $json = JSON->new->encode($hash); - $session->db->write("update userProfileData set wg_privacySettings=? where userId=?",[$json,$userId]); - } - - #Delete the public email field - my $publicEmail = WebGUI::ProfileField->new($session,"publicEmail"); - if(defined $publicEmail) { - $publicEmail->delete; - } - - print qq{Finished\n} if !$quiet; -} - - -#---------------------------------------------------------------------------- -sub addPosMode { - my $session = shift; - - print qq{\tAdding Point of Sale mode to the Shop...} if !$quiet; - - my $db = $session->db(); - my $setting = $session->setting(); - - $setting->add("groupIdCashier","3"); - $db->write(q{ALTER TABLE cart drop column couponId}); - $db->write(q{ALTER TABLE cart add column posUserId char(22) binary}); - $db->write(q{ALTER TABLE transaction add column cashierUserId char(22) binary}); - $db->write(q{update transaction set cashierUserId=userId}); - $db->write(q{ALTER TABLE addressBook add column defaultAddressId char(22) binary}); - - print qq{Finished\n} if !$quiet; -} - -#---------------------------------------------------------------------------- -sub addStorageUrlMacro { - my $session = shift; - print qq{\tAdding StorageUrl Macro... } if !$quiet; - $session->config->addToHash( "macros", "StorageUrl" => "StorageUrl" ); - print qq{Done!\n} if !$quiet; -} - -#---------------------------------------------------------------------------- -# This method add support for versionTagMode -# -sub addVersionTagMode { - my $session = shift; - - print qq{\tAdding support for versionTagMode...} if !$quiet; - - my $db = $session->db(); - my $setting = $session->setting(); - - - $db->write(q{ALTER TABLE `assetVersionTag` ADD `isSiteWide` BOOL NOT NULL DEFAULT '0'}); - - ##Use the API... - my $newField = WebGUI::ProfileField->create( - $session, - 'versionTagMode', - { - label => 'WebGUI::International::get("version tag mode","WebGUI");', - visible => 1, - required => 0, - protected => 1, - editable => 1, - forceImageOnly => 0, - requiredForPasswordRecovery => 0, - fieldType => 'selectBox', - possibleValues => q| -{ - inherited => WebGUI::International::get("versionTagMode inherited"), - multiPerUser => WebGUI::International::get("versionTagMode multiPerUser"), - singlePerUser => WebGUI::International::get("versionTagMode singlePerUser"), - siteWide => WebGUI::International::get("versionTagMode siteWide"), - autoCommit => WebGUI::International::get("versionTagMode autoCommit"), -} -|, - dataDefault => 'inherited', - } - ); - $newField->setCategory(4); - $setting->add('versionTagMode', ''); - - # Keep autoRequestCommit if enabled - my $versionTagMode = q{multiPerUser}; - if ($setting->get('autoRequestCommit')) { - $versionTagMode = q{autoCommit}; - } - $setting->set('versionTagMode', $versionTagMode); - - $setting->remove('autoRequestCommit'); - - print qq{Finished\n} if !$quiet; - - return; -} #addVersionTagMode - - -#---------------------------------------------------------------------------- -# This method migrates the the old survey system and existing surveys to the new survey system -# -# -sub migrateSurvey{ - my $session = shift; - print "\tMigrating surveys to new survey system..." unless $quiet; - - _moveOldSurveyTables($session); - _addSurveyTables($session); - - - my $surveys = $session->db->buildArrayRefOfHashRefs( - "SELECT * FROM Survey_old s - where s.revisionDate = (select max(s1.revisionDate) from Survey_old s1 where s1.assetId = s.assetId)" - ); - - for my $survey(@$surveys){ - - #move over survey - $session->db->write("insert into Survey - values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", - [ - $$survey{groupToTakeSurvey},$$survey{groupToViewReports},$$survey{groupToViewReports},'PBtmpl0000000000000064','PBtmpl0000000000000063',$$survey{maxResponsesPerUser}, - $$survey{gradebookTemplateId},$$survey{assetId},'PBtmpl0000000000000061',$$survey{revisionDate},'GRUNFctldUgop-qRLuo_DA','AjhlNO3wZvN5k4i4qioWcg', - 'wAc4azJViVTpo-2NYOXWvg', '1oBRscNIcFOI-pETrCOspA','d8jMMMRddSQ7twP4l1ZSIw','CxMpE_UPauZA3p8jdrOABw','','{}',0,0,0 - ] - ); - - my $sjson = WebGUI::Asset::Wobject::Survey::SurveyJSON->new(); - #move over sections - my $sql = "select * from Survey_section_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber"; - my $sections = $session->db->buildArrayRefOfHashRefs($sql); - my $sId = 0; - my %sMap; - for my $section(@$sections){ - my $random = $$section{questionOrder} eq 'random' ? 1 : 0; - $sMap{$$section{Survey_sectionId}} = $sId; - $sjson->update([$sId++], - { - 'text','','title',$$section{sectionName},'variable',$$section{Survey_sectionId}, - 'questionsPerPage',$$survey{questionsPerPage},'randomizeQuestions',$random - } - ); - } - - #move over questions - $sql = "select * from Survey_question_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber"; - my $questions = $session->db->buildArrayRefOfHashRefs($sql); - my $qId = 0; - my %qMap = ('radioList','Multiple Choice','text','Text','HTMLArea','Text','textArea','Text'); - my %qS; - my $lastSection = $$questions[0]->{Survey_sectionid}; - for my $question(@$questions){ - if($lastSection ne $$question{Survey_sectionId}){ - $qId = 0; - } - $qMap{$$question{Survey_questionId}} = $qId; - $qS{$$question{Survey_questionId}} = $$question{Survey_sectionId}; - $sjson->update([$sMap{$$question{Survey_sectionId}},$qId++], - { - 'text',$$question{question},'variable',$$question{Survey_questionId},'allowComment',$$question{allowComment}, - 'randomizeAnswers',$$question{randomizeAnswers},'questionType',$qMap{$$question{answerFieldType}} - } - ); - $lastSection = $$question{Survey_sectionId}; - } - - #move over answers - $sql = "select * from Survey_answer_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber"; - my $answers = $session->db->buildArrayRefOfHashRefs($sql); - my $aId = 0; - my %aMap; - my $lastQuestion = $$answers[0]->{Survey_questionId}; - for my $answer(@$answers){ - if($lastQuestion ne $$answer{Survey_questionId}){ - $aId = 0; - } - $aMap{$$survey{Survey_answerId}} = $aId; - $sjson->update([$sMap{$qS{$$answer{Survey_questionId}}},$qMap{$$answer{Survey_questionId}},$aId++], - { - 'text',$$answer{answer},'goto',$$answer{Survey_questionId},'recordedAnswer',$$answer{answer}, - 'isCorrect',$$answer{isCorrect},'NEED TO MAP QUESTION TYPES' - } - ); - $lastQuestion = $$answer{Survey_questionId}; - } - - my $date = $session->db->quickScalar('select max(revisionDate) from Survey where assetId = ?',[$$survey{assetId}]); - $session->db->write('update Survey set surveyJSON = ? where assetId = ? and revisionDate = ?',[$sjson->freeze,$$survey{assetId},$date]); - - my $rjson = WebGUI::Asset::Wobject::Survey::ResponseJSON->new(undef,undef,$sjson); - $rjson->createSurveyOrder(); - #move over responses - $sql = "select * from Survey_response_old where Survey_id = '$$survey{Survey_id}'"; - my $responses = $session->db->buildArrayRefOfHashRefs($sql); - for my $response(@$responses){ - $session->db->write('insert into Survey_response values(?,?,?,?,?,?,?,?,?,?)', - [ - $$survey{assetId},$$response{Survey_responseId},$$response{userId},$$response{userName},$$response{ipAddress},$$response{startDate},$$response{endDate}, - $$response{isComplete},undef,'{}' - ] - ); - #$sql = "select * from Survey_questionResponse_old where Survey_responseId = '$$response{Survey_responseId}'"; - #my $qresponses = $session->db->buildArrayRefOfHashRefs($sql); - #for my $qresponse(@$qresponses){ - #} - } - } - - print "Finished\n" unless $quiet; -} - - -sub _moveOldSurveyTables{ - my $session = shift; - eval{ - $session->db->write("alter table Survey rename to Survey_old"); - $session->db->write("alter table Survey_answer rename to Survey_answer_old"); - $session->db->write("alter table Survey_question rename to Survey_question_old"); - $session->db->write("alter table Survey_section rename to Survey_section_old"); - $session->db->write("alter table Survey_response rename to Survey_response_old"); - $session->db->write("alter table Survey_questionResponse rename to Survey_questionResponse_old"); - }; -} - -sub _addSurveyTables{ - my $session = shift; - $session->db->write("DROP TABLE IF EXISTS `Survey`"); - $session->db->write(" -CREATE TABLE `Survey` ( - `groupToTakeSurvey` char(22) character set utf8 collate utf8_bin NOT NULL default '2', - `groupToEditSurvey` char(22) character set utf8 collate utf8_bin NOT NULL default '3', - `groupToViewReports` char(22) character set utf8 collate utf8_bin NOT NULL default '3', - `responseTemplateId` char(22) character set utf8 collate utf8_bin NOT NULL, - `overviewTemplateId` char(22) character set utf8 collate utf8_bin NOT NULL, - `maxResponsesPerUser` int(11) NOT NULL default '1', - `gradebookTemplateId` char(22) character set utf8 collate utf8_bin NOT NULL, - `assetId` char(22) character set utf8 collate utf8_bin NOT NULL, - `templateId` char(22) character set utf8 collate utf8_bin NOT NULL, - `revisionDate` bigint(20) NOT NULL default '0', - `surveyEditTemplateId` char(22) default NULL, - `answerEditTemplateId` char(22) default NULL, - `questionEditTemplateId` char(22) default NULL, - `sectionEditTemplateId` char(22) default NULL, - `surveyTakeTemplateId` char(22) default NULL, - `surveyQuestionsId` char(22) default NULL, - `exitURL` varchar(512) default NULL, - `surveyJSON` longblob, - `timeLimit` mediumint(8) unsigned NOT NULL, - `showProgress` tinyint(3) unsigned NOT NULL default '0', - `showTimeLimit` tinyint(3) unsigned NOT NULL default '0', - PRIMARY KEY (`assetId`,`revisionDate`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; -"); - $session->db->write("DROP TABLE IF EXISTS `Survey_response`"); - $session->db->write(" -CREATE TABLE `Survey_response` ( - `assetId` char(22) character set utf8 collate utf8_bin NOT NULL, - `Survey_responseId` char(22) character set utf8 collate utf8_bin NOT NULL, - `userId` char(22) default NULL, - `username` char(255) default NULL, - `ipAddress` char(15) default NULL, - `startDate` bigint(20) NOT NULL default '0', - `endDate` bigint(20) NOT NULL default '0', - `isComplete` int(11) NOT NULL default '0', - `anonId` varchar(255) default NULL, - `responseJSON` longblob, - PRIMARY KEY (`Survey_responseId`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - "); - $session->db->write("DROP TABLE IF EXISTS `Survey_tempReport`"); - $session->db->write(" -CREATE TABLE `Survey_tempReport` ( - `assetId` char(22) NOT NULL, - `Survey_responseId` char(22) NOT NULL, - `order` smallint(5) unsigned NOT NULL, - `sectionNumber` smallint(5) unsigned NOT NULL, - `sectionName` varchar(512) default NULL, - `questionNumber` smallint(5) unsigned NOT NULL, - `questionName` varchar(512) default NULL, - `questionComment` mediumtext, - `answerNumber` smallint(5) unsigned default NULL, - `answerValue` mediumtext, - `answerComment` mediumtext, - `entryDate` bigint(20) unsigned NOT NULL COMMENT 'UTC Unix Time', - `isCorrect` tinyint(3) unsigned default NULL, - `value` int(11) default NULL, - `fileStoreageId` char(22) default NULL COMMENT 'Not implemented yet', - PRIMARY KEY (`assetId`,`Survey_responseId`,`order`), - KEY `assetId` (`assetId`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - "); -} - -#---------------------------------------------------------------------------- -sub fixFriendsGroups { - my $session = shift; - my $users = $session->db->buildArrayRef("select userId from users where friendsGroup is not null && friendsGroup != ''"); - foreach my $userId (@{$users}) { - #purge the admin group - WebGUI::User->new($session,$userId)->friends->deleteGroups([3]); - } -} - -#---------------------------------------------------------------------------- -sub addRecurringSubscriptionSwitch { - my $session = shift; - - print "\tAdding a recurring/nonrecurring switch to subscriptions... " unless $quiet; - - $session->db->write('alter table Subscription add column recurringSubscription tinyint(1) not null default 1'); - - print "Done!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub upgradeAccount { - my $session = shift; - my $config = $session->config; - my $setting = $session->setting; - - print "\tUpgrading WebGUI Account System... " unless $quiet; - #Add account properties to config file - $session->config->delete("account"); #Delete account if it exists - $session->config->set("account",[ - { - identifier => "profile", - title => "^International(title,Account_Profile);", - className => "WebGUI::Account::Profile" - }, - { - identifier => "inbox", - title => "^International(title,Account_Inbox);", - className => "WebGUI::Account::Inbox" - }, - { - identifier => "friends", - title => "^International(title,Account_Friends);", - className => "WebGUI::Account::Friends" - }, - { - identifier => "contributions", - title => "^International(title,Account_Contributions);", - className => "WebGUI::Account::Contributions" - }, - { - identifier => "shop", - title => "^International(title,Account_Shop);", - className => "WebGUI::Account::Shop" - }, - { - identifier => "user", - title => "^International(title,Account_User);", - className => "WebGUI::Account::User" - }, - ]); - $session->config->set("profileModuleIdentifier","profile"); - #Add the content handler to the config file if it's not there - my $oldHandlers = $session->config->get( "contentHandlers" ); - unless (isIn("WebGUI::Content::Account",@{$oldHandlers})) { - my @newHandlers; - for my $handler ( @{ $oldHandlers } ) { - if ( $handler eq "WebGUI::Content::Operation" ) { - push @newHandlers, "WebGUI::Content::Account"; - } - push @newHandlers, $handler; - } - $session->config->set( "contentHandlers", \@newHandlers ); - } - - #Add new macros to the config file - $session->config->addToHash("macros","BackToSite","BackToSite"); - $session->config->addToHash("macros","If","If"); - $session->config->addToHash("macros","DeactivateAccount","DeactivateAccount"); - - - #Add the settings for the profile module - $setting->add("profileStyleTemplateId",""); #Use the userStyle by default - $setting->add("profileLayoutTemplateId","FJbUTvZ2nUTn65LpW6gjsA"); - $setting->add("profileEditTemplateId","75CmQgpcCSkdsL-oawdn3Q"); - $setting->add("profileViewTempalteId","2CS-BErrjMmESOtGT90qOg"); - $setting->add("profileErrorTempalteId","MBmWlA_YEA2I6D29OMGtRg"); - - #Add the settings for the inbox module - $setting->add("inboxStyleTemplateId",""); #Use the userStyle by default - $setting->add("inboxLayoutTempalteId","gfZOwaTWYjbSoVaQtHBBEw"); - $setting->add("inboxViewTemplateId","c8xrwVuu5QE0XtF9DiVzLw"); - $setting->add("inboxViewMessageTemplateId","0n4HtbXaWa_XJHkFjetnLQ"); - $setting->add("inboxSendMessageTemplateId","6uQEULvXFgCYlRWnYzZsuA"); - $setting->add("inboxErrorTemplateId","ErEzulFiEKDkaCDVmxUavw"); - $setting->add("inboxMessageConfirmationTemplateId","DUoxlTBXhVS-Zl3CFDpt9g"); - #Invitations - $setting->add("inboxManageInvitationsTemplateId","1Q4Je3hKCJzeo0ZBB5YB8g"); - $setting->add("inboxViewInvitationTemplateId","VBkY05f-E3WJS50WpdKd1Q"); - $setting->add("inboxInvitationConfirmTemplateId","5A8Hd9zXvByTDy4x-H28qw"); - #Inbox Invitations - $setting->add("inboxInviteUserEnabled",$session->setting->get("userInvitationsEnabled")); - $setting->add("inboxInviteUserRestrictSubject","0"); - $setting->add("inboxInviteUserSubject","^International(invite subject,Account_Inbox,^u;);"); - $setting->add("inboxInviteUserRestrictMessage","0"); - $setting->add("inboxInviteUserMessage","^International(invite message,Account_Inbox);"); - $setting->add("inboxInviteUserMessageTemplateId","XgcsoDrbC0duVla7N7JAdw"); - $setting->add("inboxInviteUserTemplateId","cR0UFm7I1qUI2Wbpj--08Q"); - $setting->add("inboxInviteUserConfirmTemplateId","SVIhz68689hwUGgcDM-gWw"); - - #Add the settings for the friends module - $setting->add("friendsStyleTemplateId",""); #Use the userStyle by default - $setting->add("friendsLayoutTempalteId","zrNpGbT3odfIkg6nFSUy8Q"); - $setting->add("friendsViewTemplateId","1Yn_zE_dSiNuaBGNLPbxtw"); - $setting->add("friendsEditTemplateId","AZFU33p0jpPJ-E6qLSWZng"); - $setting->add("friendsSendRequestTemplateId","AGJBGviWGAwjnwziiPjvDg"); - $setting->add("friendsErrorTemplateId","7Ijdd8SW32lVgg2H8R-Aqw"); - $setting->add("friendsConfirmTemplateId","K8F0j_cq_jgo8dvWY_26Ag"); - $setting->add("friendsRemoveConfirmTemplateId","G5V6neXIDiFXN05oL-U3AQ"); - - #Add the settings for the user module - $setting->add("userAccountStyleTemplateId",""); #Use the userStyle by default - $setting->add("userAccountLayoutTemplateId","9ThW278DWLV0-Svf68ljFQ"); - - #Add the settings for the shop module - $setting->add("shopStyleTemplateId",""); #Use the userStyle by default - $setting->add("shopLayoutTemplateId","aUDsJ-vB9RgP-AYvPOy8FQ"); - - #Add the settings for the contributions module - $setting->add("contribStyleTemplateId",""); #Use the userStyle by default - $setting->add("contribLayoutTemplateId","b4n3VyUIsAHyIvT-W-jziA"); - $setting->add("contribViewTemplateId","1IzRpX0tgW7iuCfaU2Kk0A"); - - - #Add inbox changes - $session->db->write(q{ - create table inbox_messageState ( - messageId char(22) binary not null, - userId char(22) binary not null, - isRead tinyint(4) not null default 0, - repliedTo tinyint(4) not null default 0, - deleted tinyint(4) not null default 0, - primary key (messageId, userId) - ) - }); - - #Update the inbox - my $sth = $session->db->read("select messageId, groupId, userId, status from inbox"); - while(my ($messageId,$groupId,$userId,$status) = $sth->array) { - my $repliedTo = $status eq "replied"; - my $isRead = ($status ne "unread" && $status ne "pending")?1:0; - my $deleted = 0; - - if($status eq "deleted") { - #Purge deleted messages - $session->db->write("delete from inbox where messageId=?",[$messageId]); - next; - } - - if($groupId) { - my $g = WebGUI::Group->new($session,$groupId); - my $users = $g->getAllUsers; - foreach my $userId (@{$users}) { - $session->db->write( - q{ REPLACE INTO inbox_messageState (messageId,userId,isRead,repliedTo,deleted) VALUES (?,?,?,?,?) }, - [$messageId,$userId,$isRead,$repliedTo,$deleted] - ); - } - } - - if($userId) { - $session->db->write( - q{ REPLACE INTO inbox_messageState (messageId,userId,isRead,repliedTo,deleted) VALUES (?,?,?,?,?) }, - [$messageId,$userId,$isRead,$repliedTo,$deleted] - ); - } - - if($status ne "completed" && $status ne "pending") { - $session->db->write( - q{ UPDATE inbox SET status='active' WHERE messageId=? }, - [$messageId] - ); - } - } - - #Add the profile field changes - $session->db->write(q{alter table userProfileCategory add column shortLabel char(255) default NULL after label}); - $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("misc info short","WebGUI");' where profileCategoryId='1'}); - $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("contact info short","WebGUI");' where profileCategoryId='2'}); - $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("personal info short","WebGUI");' where profileCategoryId='3'}); - $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("preferences short","WebGUI");' where profileCategoryId='4'}); - $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("home info short","WebGUI");' where profileCategoryId='5'}); - $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("work info short","WebGUI");' where profileCategoryId='6'}); - $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("demographic info short","WebGUI");' where profileCategoryId='7'}); - - $session->db->write(q{alter table userProfileData modify publicProfile char(10) default 'none'}); - $session->db->write(q{update userProfileData set publicProfile='none' where publicProfile='0' || publicProfile is NULL || publicProfile=''}); - $session->db->write(q{update userProfileData set publicProfile='all' where publicProfile='1'}); - $session->db->write(q{REPLACE INTO `userProfileField` VALUES ('publicProfile','WebGUI::International::get(861)',1,0,'RadioList','{ all=>WebGUI::International::get(\'public label\',\'Account_Profile\'), friends=>WebGUI::International::get(\'friends only label\',\'Account_Profile\'), none=>WebGUI::International::get(\'private label\',\'Account_Profile\')}','[\"none\"]',8,'4',1,1,0,0,0,'')}); - - #Clean up old templates and settings - my $oldsettings = { - editUserProfileTemplate => 'Operation/Profile/Edit', - viewUserProfileTemplate => 'Operation/Profile/View', - manageFriendsTemplateId => 'friends/manage', - sendPrivateMessageTemplateId => 'Inbox/SendPrivateMessage', - viewInboxTemplateId => 'Inbox', - viewInboxMessageTemplateId => 'Inbox/Message', - userInvitationsEmailTemplateId => 'userInvite/Email', - userInvitationsEnabled => 'userInvite', - userInvitationsEmailExists => '', - }; - - foreach my $setting (keys %{$oldsettings}) { - #Remove the setting - $session->setting->remove($setting); - #$session->db->write("delete from settings where name=?",[$setting]); - #Remove all the templates with the related namespace - next if ($oldsettings->{$setting} eq ""); - my $assets = $session->db->buildArrayRef("select distinct assetId from template where namespace=?",[$oldsettings->{$setting}]); - #Purge the template - foreach my $assetId (@{$assets}) { - WebGUI::Asset->newByDynamicClass($session,$assetId)->purge; - } - } - - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -# removes the caseInsensitiveOS flag from the config file, as it isn't used anymore -sub removeCaseInsensitiveConfig { - my $session = shift; - print "\tRemoving caseInsensitiveOS flag from config..." unless $quiet; - $session->config->delete('caseInsensitiveOS'); - $session->db->write('DROP TABLE storageTranslation'); - print " Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub createLastUpdatedField { - my $session = shift; - print "\tAdding last updated field to all assets... " unless $quiet; - my $db = $session->db; - $db->write("alter table assetData add column lastModified bigint"); - $db->write("update assetData set lastModified=revisionDate"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub upgradeSyndicatedContentTemplates { - my $session = shift; - print "\tUpgrading syndicated content assets... " unless $quiet; - my $db = $session->db; - my $templates = $db->read("select distinct assetId from template where namespace='SyndicatedContent'"); - while (my ($id) = $templates->array) { - my $asset = WebGUI::Asset::Template->new($session, $id); - if (defined $asset) { - if ($asset->getId eq "DPUROtmpl0000000000001") { # this one no longer applies - $asset->trash; - next; - } - my $template = $asset->get('template'); - $template =~ s{channel.title}{channel_title}xmsi; - $template =~ s{channel.description}{channel_description}xmsi; - $template =~ s{channel.link}{channel_link}xmsi; - $template =~ s{site_link}{channel_link}xmsi; - $template =~ s{site_title}{channel_title}xmsi; - $template =~ s{descriptionFull}{description}xmsi; - $template =~ s{rss.url.0.9}{rss_url}xmsi; - $template =~ s{rss.url}{rss_url}xmsi; - $template =~ s{rss.url.0.91}{rss_url}xmsi; - $template =~ s{rss.url.1.0}{rdf_url}xmsi; - $template =~ s{rss.url.2.0}{rss_url}xmsi; - $asset->addRevision({template=>$template}); - } - } - $db->write("update SyndicatedContent set templateId='PBtmpl0000000000000065' where templateId='DPUROtmpl0000000000001'"); - $db->write("alter table SyndicatedContent drop column displayMode"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub createFieldShowOnline { - my $session = shift; - print "\tCreating an additional profile field 'showOnline' for the UsersOnline macro... " unless $quiet; - - # Define field properties - my $properties = { - label => q!WebGUI::International::get('Show when online?','WebGUI')!, - visible => 1, - required => 0, - protected => 1, # The UsersOnline macro requires this field for working properly. - editable => 1, - fieldType => 'YesNo', - dataDefault => 0 # Users are not shown by default. - }; - # Create field in category "preferences" - my $field = WebGUI::ProfileField->create($session, 'showOnline', $properties, 4); - - # Check for failure - if ($field == undef) { - print "Creation of the field 'showOnline' failed, possibly because it does already exist. Note that this may cause the UsersOnline macro not to work properly.\n"; - } - else { - print "DONE!\n" unless $quiet; - } - - return; -} - -#---------------------------------------------------------------------------- -# installDataTableAsset -# Install the asset by creating the DB table and adding it to the config file -sub installDataTableAsset { - my $session = shift; - print "\tInstalling the DataTable asset... " unless $quiet; - - $session->db->write( <<'ENDSQL' ); - CREATE TABLE DataTable ( - assetId VARCHAR(22) BINARY NOT NULL, - revisionDate BIGINT NOT NULL, - data LONGTEXT, - templateId VARCHAR(22) BINARY, - PRIMARY KEY ( assetId, revisionDate ) - ) -ENDSQL - - my $assets = $session->config->get( "assets" ); - $assets->{ "WebGUI::Asset::Wobject::DataTable" } = { category => "basic" }; - $session->config->set( "assets", $assets ); - - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -# installDataTableAsset -# Install the content handler by adding it to the config file -sub installAjaxI18N { - my $session = shift; - print "\tInstalling the AjaxI18N content handler... " unless $quiet; - - my @newHandlers; - my $oldHandlers = $session->config->get( "contentHandlers" ); - for my $handler ( @{ $oldHandlers } ) { - if ( $handler eq "WebGUI::Content::Operation" ) { - push @newHandlers, "WebGUI::Content::AjaxI18N"; - } - elsif ( $handler eq "WebGUI::Content::AjaxI18N" ) { - next; - } - push @newHandlers, $handler; - } - $session->config->set( "contentHandlers", \@newHandlers ); - - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -# installSiteIndex -# Install the content handler by adding it to the config file -sub installSiteIndex { - my $session = shift; - print "\tInstalling the SiteIndex content handler... " unless $quiet; - - my $oldHandlers = $session->config->get( "contentHandlers" ); - my @newHandlers; - for my $handler ( @{ $oldHandlers } ) { - if ( $handler eq "WebGUI::Content::Asset" ) { - push @newHandlers, "WebGUI::Content::SiteIndex"; - } - push @newHandlers, $handler; - } - $session->config->set( "contentHandlers", \@newHandlers ); - - print "DONE!\n" unless $quiet; -} - - -#---------------------------------------------------------------------------- -sub upgradeToYui26 { - my $session = shift; - print "\tUpgrading to YUI 2.6... " unless $quiet; - $session->db->write("update template set template=replace(template, 'resize-beta.js', 'resize-min.js'), headBlock=replace(headBlock, 'resize-beta.js', 'resize-min.js')"); - $session->db->write("update template set template=replace(template, 'resize-beta-min.js', 'resize-min.js'), headBlock=replace(headBlock, 'resize-beta-min.js', 'resize-min.js')"); - $session->db->write("update template set template=replace(template, 'datasource-beta.js', 'datasource-min.js'), headBlock=replace(headBlock, 'datasource-beta.js', 'datasource-min.js')"); - $session->db->write("update template set template=replace(template, 'datasource-beta-min.js', 'datasource-min.js'), headBlock=replace(headBlock, 'datasource-beta-min.js', 'datasource-min.js')"); - $session->db->write("update template set template=replace(template, 'datatable-beta.js', 'datatable-min.js'), headBlock=replace(headBlock, 'datatable-beta.js', 'datatable-min.js')"); - $session->db->write("update template set template=replace(template, 'datatable-beta-min.js', 'datatable-min.js'), headBlock=replace(headBlock, 'datatable-beta-min.js', 'datatable-min.js')"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub changeDefaultPaginationInSearch { - my $session = shift; - print "\tAllow content managers to change the default pagination in the search asset... " unless $quiet; - $session->db->write("ALTER TABLE `search` ADD COLUMN `paginateAfter` INTEGER NOT NULL DEFAULT 25"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addUsersOnlineMacro { - my $session = shift; - print "\tMaking the UsersOnline macro available... " unless $quiet; - $session->config->addToHash("macros","UsersOnline","UsersOnline"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub updateAddressBook { - my $session = shift; - print "\tAdding organization and email to address book... " unless $quiet; - my $db = $session->db; - $db->write("alter table address add column organization char(255)"); - $db->write("alter table address add column email char(255)"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub repairManageWorkflows { - my $session = shift; - print "\tCorrecting the Manage Workflow link in configuration file... " unless $quiet; - # and here's our code - my $ac = $session->config->get('adminConsole'); - if (exists $ac->{'workflow'}) { - $ac->{'workflow'}->{'url'} = "^PageUrl(\"\",op=manageWorkflows);"; - $session->config->set('adminConsole', $ac); - } - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addPreTextToThingyFields { - my $session = shift; - print "\tAdding a pre-text property to Thingy fields... " unless $quiet; - $session->db->write('ALTER TABLE `Thingy_fields` ADD pretext varchar(255)'); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addProfileExtrasField { - my $session = shift; - print "\tAdding the Extras field for profile fields... " unless $quiet; - my $db = $session->db; - $db->write('alter table userProfileField add extras text default NULL'); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -# Add the workflow property to DataForm -sub addWorkflowToDataform { - my $session = shift; - print "\tAdding Workflow to DataForm... " unless $quiet; - - my $sth = $session->db->read('DESCRIBE `DataForm`'); - while (my ($col) = $sth->array) { - if ( $col eq 'workflowIdAddEntry' ) { - print "Already done, skipping.\n" unless $quiet; - return; - } - } - - $session->db->write( "ALTER TABLE DataForm ADD COLUMN workflowIdAddEntry CHAR(22) BINARY" ); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addAssetDiscoveryService { - my $session = shift; - print "\tAdding asset discovery service..." unless $quiet; - my @handlers; - foreach my $handler (@{$session->config->get("contentHandlers")}) { - if ($handler eq "WebGUI::Content::Operation") { - push @handlers, 'WebGUI::Content::AssetDiscovery'; - } - push @handlers, $handler; - } - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addCommentsAspectToWiki { - my $session = shift; - print "\tAdding comments aspect to wiki..." unless $quiet; - my $db = $session->db; - my $pages = $db->read("select assetId,revisionDate from WikiPage"); - while (my ($id, $rev) = $pages->array) { - $db->write("insert into assetAspectComments (assetId, revisionDate, comments, averageCommentRating) values (?,?,'[]',0)",[$id,$rev]); - } - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addCommentsAspect { - my $session = shift; - print "\tAdding comments asset aspect..." unless $quiet; - $session->db->write("create table assetAspectComments ( - assetId char(22) binary not null, - revisionDate bigint not null, - comments mediumtext, - averageCommentRating int, - primary key (assetId, revisionDate) - )"); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -# make sure each config file has the extensions to export as-is. however, if -# this system received a backport, leave the field as is. -sub addExportExtensionsToConfigFile { - my $session = shift; - print "\tAdding binary export extensions to config file... " unless $quiet; - # skip if the field has been defined already by backporting - unless ( defined $session->config->get('exportBinaryExtensions') ) { - # otherwise, set the field - $session->config->set('exportBinaryExtensions', - [ qw/.html .htm .txt .pdf .jpg .css .gif .png .doc .xls .xml .rss .bmp - .mp3 .js .fla .flv .swf .pl .php .php3 .php4 .php5 .ppt .docx .zip .tar - .rar .gz .bz2/ ] ); - } - - print "Done.\n" unless $quiet; -} - -sub addThingyColumns { - my $session = shift; - print "\tAdding exportMetaData and maxEntriesPerUser columns to Thingy_things table... " unless $quiet; - $session->db->write('ALTER TABLE `Thingy_things` ADD exportMetaData int(11)'); - $session->db->write('ALTER TABLE `Thingy_things` ADD maxEntriesPerUser int(11)'); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub removeUnusedTemplates { - my $session = shift; - print "\tDeleting old unused templates... " unless $quiet; - foreach my $id (qw(PBtmpl0000000000000046 e-WvgcKROPCoHwiiHLktCg PBtmpl0000000000000034 AFdXZZmGnSKalNSobQMB5w)) { - my $asset = WebGUI::Asset->new($session, $id); - if (defined $asset && $asset->getChildCount == 0) { - $asset->purge; - } - } - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub deleteAdminBarTemplates { - my $session = shift; - print "\tDeleting AdminBar templates... " unless $quiet; - foreach my $id (qw(PBtmpl0000000000000090 Ov2ssJHwp_1eEWKlDyUKmg)) { - my $asset = WebGUI::Asset->newByDynamicClass($session, $id); - if (defined $asset) { - $asset->trash; - } - } - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub repairBrokenProductSkus { - my $session = shift; - print "\tRepairing broken Products that were imported... " unless $quiet; - my $getAProduct = WebGUI::Asset::Sku::Product->getIsa($session); - while (my $product = $getAProduct->()) { - COLLATERAL: foreach my $collateral (@{ $product->getAllCollateral('variantsJSON') }) { - next COLLATERAL unless exists $collateral->{sku}; - $collateral->{varSku} = $collateral->{sku}; - delete $collateral->{sku}; - $product->setCollateral('variantsJSON', 'variantId', $collateral->{variantId}, $collateral); - } - } - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub migrateAssetsToNewConfigFormat { - my $session = shift; - print "\tRestructuring asset configuration... " unless $quiet; - my $config = $session->config; - - # devs doing multiple upgrades - # the list has already been updated by a previous run - my $assetList = $config->get("assets"); - unless (ref $assetList eq "ARRAY") { - warn "ERROR: Looks like you've already run this upgrade.\n"; - return undef; - } - - # add categories - $config->set('assetCategories', { - basic => { - title => "^International(basic,Macro_AdminBar);", - uiLevel => 1, - }, - intranet => { - title => "^International(intranet,Macro_AdminBar);", - uiLevel => 5, - }, - shop => { - title => "^International(shop,Shop);", - uiLevel => 5, - }, - utilities => { - title => "^International(utilities,Macro_AdminBar);", - uiLevel => 9, - }, - community => { - title => "^International(community,Macro_AdminBar);", - uiLevel => 5, - }, - }); - - # deal with the old asset list - my $assetContainers = $config->get("assetContainers"); - $assetContainers = [] unless (ref $assetContainers eq "ARRAY"); - my $utilityAssets = $config->get("utilityAssets"); - $utilityAssets = [] unless (ref $utilityAssets eq "ARRAY"); - my @oldAssetList = (@$assetList, @$utilityAssets, @$assetContainers); - my %assets = ( - 'WebGUI::Asset::Wobject::Collaboration::Newsletter' => { - category => "community", - } - ); - foreach my $class (@oldAssetList) { - my %properties; - if (isIn($class, qw( - WebGUI::Asset::Wobject::Article - WebGUI::Asset::Wobject::Layout - WebGUI::Asset::Wobject::Folder - WebGUI::Asset::Wobject::Calendar - WebGUI::Asset::Wobject::Poll - WebGUI::Asset::Wobject::Search - WebGUI::Asset::FilePile - WebGUI::Asset::Snippet - WebGUI::Asset::Wobject::DataForm - ))) { - $properties{category} = 'basic'; - } - elsif (isIn($class, qw( - WebGUI::Asset::Wobject::Collaboration::Newsletter - WebGUI::Asset::Wobject::WikiMaster - WebGUI::Asset::Wobject::Collaboration - WebGUI::Asset::Wobject::Survey - WebGUI::Asset::Wobject::Gallery - WebGUI::Asset::Wobject::MessageBoard - WebGUI::Asset::Wobject::Matrix - ))) { - $properties{category} = 'community'; - } - elsif (isIn($class, qw( - WebGUI::Asset::Wobject::StockData - WebGUI::Asset::Wobject::Dashboard - WebGUI::Asset::Wobject::InOutBoard - WebGUI::Asset::Wobject::MultiSearch - WebGUI::Asset::Wobject::ProjectManager - WebGUI::Asset::Wobject::TimeTracking - WebGUI::Asset::Wobject::UserList - WebGUI::Asset::Wobject::WeatherData - WebGUI::Asset::Wobject::Thingy - ))) { - $properties{category} = 'intranet'; - } - elsif (isIn($class, qw( - WebGUI::Asset::Wobject::Bazaar - WebGUI::Asset::Wobject::EventManagementSystem - WebGUI::Asset::Wobject::Shelf - WebGUI::Asset::Sku::Product - WebGUI::Asset::Sku::FlatDiscount - WebGUI::Asset::Sku::Donation - WebGUI::Asset::Sku::Subscription - ))) { - $properties{category} = 'shop'; - } - elsif (isIn($class, qw( - WebGUI::Asset::Wobject::WSClient - WebGUI::Asset::Wobject::SQLReport - WebGUI::Asset::Wobject::SyndicatedContent - WebGUI::Asset::Redirect - WebGUI::Asset::Template - WebGUI::Asset::Wobject::Navigation - WebGUI::Asset::File - WebGUI::Asset::Wobject::HttpProxy - WebGUI::Asset::File::Image - WebGUI::Asset::File::ZipArchive - WebGUI::Asset::RichEdit - ))) { - $properties{category} = 'utilities'; - } - else { - # other assets listed but not in the core - $properties{category} = 'utilities'; - } - $assets{$class} = \%properties; - } - - # deal with containers - foreach my $class (@$assetContainers) { - $assets{$class}{isContainer} = 1; - } - - # deal with custom add privileges - my $addGroups = $config->get("assetAddPrivilege"); - if (ref $addGroups eq "HASH") { - foreach my $class (keys %{$addGroups}) { - $assets{$class}{addGroup} = $addGroups->{$class}; - } - } - - # deal with custom ui levels - my $uiLevels = $config->get("assetUiLevel"); - if (ref $uiLevels eq "HASH") { - foreach my $class (keys %{$addGroups}) { - $assets{$class}{uiLevel} = $uiLevels->{$class}; - } - } - - # deal with custom field ui levels - foreach my $class (keys %assets) { - my $directive =~ s/::/_/g; - $directive .= '_uiLevel'; - my $value = $config->get($directive); - if (ref $value eq "HASH") { - foreach my $field (keys %{$value}) { - $assets{$class}{fields}{$field}{uiLevel} = $value->{$field}; - } - $config->delete($directive); - } - } - - # write the file - $config->delete('assetContainers'); - $config->delete('utilityAssets'); - $config->delete("assetUiLevel"); - $config->delete("assetAddPrivilege"); - $config->set("assets",\%assets); - - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub makeAdminConsolePluggable { - my $session = shift; - print "\tMaking admin console pluggable... " unless $quiet; - $session->config->set("adminConsole",{ - "spectre" => { - title => "^International(spectre,Spectre);", - icon => "spectre.gif", - url => "^PageUrl(\"\",op=spectreStatus);", - uiLevel => 9, - groupSetting => "groupIdAdminSpectre" - }, - "assets" => { - title => "^International(assets,Asset);", - icon => "assets.gif", - url => "^PageUrl(\"\",op=assetManager);", - uiLevel => 5, - group => "12" - }, - "versions" => { - title => "^International(version tags,VersionTag);", - icon => "versionTags.gif", - url => "^PageUrl(\"\",op=manageVersions);", - uiLevel => 7, - groupSetting => "groupIdAdminVersionTag" - }, - "workflow" => { - title => "^International(topicName,Workflow);", - icon => "workflow.gif", - url => "^PageUrl(\"\",manageWorkflows);", - uiLevel => 7, - groupSetting => "groupIdAdminWorkflow" - }, - "adSpace" => { - title => "^International(topicName,AdSpace);", - icon => "advertising.gif", - url => "^PageUrl(\"\",op=manageAdSpaces);", - uiLevel => 5, - groupSetting => "groupIdAdminAdSpace" - }, - "cron" => { - title => "^International(topicName,Workflow_Cron);", - icon => "cron.gif", - url => "^PageUrl(\"\",op=manageCron);", - uiLevel => 9, - groupSetting => "groupIdAdminCron" - }, - "users" => { - title => "^International(149,WebGUI);", - icon => "users.gif", - url => "^PageUrl(\"\",op=listUsers);", - uiLevel => 5, - groupSetting => "groupIdAdminUser" - }, - "clipboard" => { - title => "^International(948,WebGUI);", - icon => "clipboard.gif", - url => "^PageUrl(\"\",func=manageClipboard);", - uiLevel => 5, - group => "12" - }, - "trash" => { - title => "^International(trash,WebGUI);", - icon => "trash.gif", - url => "^PageUrl(\"\",func=manageTrash);", - uiLevel => 5, - group => "12" - }, - "databases" => { - title => "^International(databases,WebGUI);", - icon => "databases.gif", - url => "^PageUrl(\"\",op=listDatabaseLinks);", - uiLevel => 9, - groupSetting => "groupIdAdminDatabaseLink" - }, - "ldapconnections" => { - title => "^International(ldapconnections,AuthLDAP);", - icon => "ldap.gif", - url => "^PageUrl(\"\",op=listLDAPLinks);", - uiLevel => 9, - groupSetting => "groupIdAdminLDAPLink" - }, - "groups" => { - title => "^International(89,WebGUI);", - icon => "groups.gif", - url => "^PageUrl(\"\",op=listGroups);", - uiLevel => 5, - groupSetting => "groupIdAdminGroup" - }, - "settings" => { - title => "^International(settings,WebGUI);", - icon => "settings.gif", - url => "^PageUrl(\"\",op=editSettings);", - uiLevel => 5, - group => "3" - }, - "help" => { - title => "^International(help,WebGUI);", - icon => "help.gif", - url => "^PageUrl(\"\",op=viewHelpIndex);", - uiLevel => 1, - groupSetting => "groupIdAdminHelp" - }, - "statistics" => { - title => "^International(437,WebGUI);", - icon => "statistics.gif", - url => "^PageUrl(\"\",op=viewStatistics);", - uiLevel => 1, - groupSetting => "groupIdAdminStatistics" - }, - "contentProfiling" => { - title => "^International(content profiling,Asset);", - icon => "contentProfiling.gif", - url => "^PageUrl(\"\",func=manageMetaData);", - uiLevel => 5, - group => "4" - }, - "contentFilters" => { - title => "^International(content filters,WebGUI);", - icon => "contentFilters.gif", - url => "^PageUrl(\"\",op=listReplacements);", - uiLevel => 3, - groupSetting => "groupIdAdminReplacements" - }, - "userProfiling" => { - title => "^International(user profiling,WebGUIProfile);", - icon => "userProfiling.gif", - url => "^PageUrl(\"\",op=editProfileSettings);", - uiLevel => 5, - groupSetting => "groupIdAdminProfileSettings" - }, - "loginHistory" => { - title => "^International(426,WebGUI);", - icon => "loginHistory.gif", - url => "^PageUrl(\"\",op=viewLoginHistory);", - uiLevel => 5, - groupSetting => "groupIdAdminLoginHistory" - }, - "inbox" => { - title => "^International(159,WebGUI);", - icon => "inbox.gif", - url => "^PageUrl(\"\",op=viewInbox);", - uiLevel => 1, - group => "2" - }, - "activeSessions" => { - title => "^International(425,WebGUI);", - icon => "activeSessions.gif", - url => "^PageUrl(\"\",op=viewActiveSessions);", - uiLevel => 5, - groupSetting => "groupIdAdminActiveSessions" - }, - "shop" => { - title => "^International(shop,Shop);", - icon => "shop.gif", - url => "^PageUrl(\"\",shop=admin);", - uiLevel => 5, - groupSetting => 'groupIdAdminCommerce' - }, - "cache" => { - title => "^International(manage cache,WebGUI);", - icon => "cache.gif", - url => "^PageUrl(\"\",op=manageCache);", - uiLevel => 5, - groupSetting => "groupIdAdminCache" - }, - "graphics" => { - title => "^International(manage graphics,Graphics);", - icon => "graphics.gif", - url => "^PageUrl(\"\",op=listGraphicsOptions);", - uiLevel => 5, - groupSetting => "groupIdAdminGraphics" - }, - }); - print "DONE!\n" unless $quiet; -} - - -#---------------------------------------------------------------------------- -# Add the "isDefault" flag and set it for the right templates -sub addIsDefaultTemplates { - my $session = shift; - print "\tAdding warning when editing default templates... " unless $quiet; - $session->db->write( "ALTER TABLE template ADD COLUMN isDefault INT(1) DEFAULT 0" ); - print "DONE!\n" unless $quiet; -} - -sub setDefaultTemplates { - my $session = shift; - print "\tUpdating default templates to show warning... " unless $quiet; - my $defaultTemplates =[ - '-ANLpoTEP-n4POAdRxCzRw','05FpjceLYhq4csF1Kww1KQ','0X4Q3tBWUb_thsVbsYz9xQ', - '2gtFt7c0qAFNU3BG_uvNvg','2rC4ErZ3c77OJzJm7O5s3w','3womoo7Teyy2YKFa25-MZg', - '63ix2-hU0FchXGIWkG3tow','6X-7Twabn5KKO_AbgK3PEw','7JCTAiu1U_bT9ldr655Blw', - 'BMybD3cEnmXVk2wQ_qEsRQ','CalendarDay00000000001','CalendarEvent000000001', - 'CalendarEventEdit00001','CalendarMonth000000001','CalendarPrintDay000001', - 'CalendarPrintEvent0001','CalendarPrintMonth0001','CalendarPrintWeek00001', - 'CalendarSearch00000001','CalendarWeek0000000001','DPUROtmpl0000000000001', - 'DashboardViewTmpl00001','EBlxJpZQ9o-8VBOaGQbChA','GNvjCFQWjY2AF2uf0aCM8Q', - 'IOB0000000000000000001','IOB0000000000000000002','KAMdiUdJykjN02CPHpyZOw', - 'MultiSearchTmpl0000001','OOyMH33plAy6oCj_QWrxtg','OkphOEdaSGTXnFGhK4GT5A', - 'OxJWQgnGsgyGohP2L3zJPQ','PBnav00000000000bullet','PBnav00000000indentnav', - 'PBnav000000style01lvl2','PBtmpl0000000000000001','PBtmpl0000000000000002', - 'PBtmpl0000000000000004','PBtmpl0000000000000005','PBtmpl0000000000000006', - 'PBtmpl0000000000000010','PBtmpl0000000000000011','PBtmpl0000000000000012', - 'PBtmpl0000000000000013','PBtmpl0000000000000014','PBtmpl0000000000000020', - 'PBtmpl0000000000000021','PBtmpl0000000000000024','PBtmpl0000000000000026', - 'PBtmpl0000000000000027','PBtmpl0000000000000029','PBtmpl0000000000000031', - 'PBtmpl0000000000000032','PBtmpl0000000000000033','PBtmpl0000000000000036', - 'PBtmpl0000000000000037','PBtmpl0000000000000038','PBtmpl0000000000000039', - 'PBtmpl0000000000000040','PBtmpl0000000000000041','PBtmpl0000000000000042', - 'PBtmpl0000000000000043','PBtmpl0000000000000044','PBtmpl0000000000000045', - 'PBtmpl0000000000000047','PBtmpl0000000000000048','PBtmpl0000000000000051', - 'PBtmpl0000000000000053','PBtmpl0000000000000054', - 'PBtmpl0000000000000055','PBtmpl0000000000000056','PBtmpl0000000000000057', - 'PBtmpl0000000000000059','PBtmpl0000000000000060','PBtmpl0000000000000061', - 'PBtmpl0000000000000062','PBtmpl0000000000000063','PBtmpl0000000000000064', - 'PBtmpl0000000000000065','PBtmpl0000000000000066','PBtmpl0000000000000067', - 'PBtmpl0000000000000068','PBtmpl0000000000000077', - 'PBtmpl0000000000000078','PBtmpl0000000000000079','PBtmpl0000000000000080', - 'PBtmpl0000000000000081','PBtmpl0000000000000082','PBtmpl0000000000000083', - 'PBtmpl0000000000000084','PBtmpl0000000000000085','PBtmpl0000000000000088', - 'PBtmpl0000000000000090','PBtmpl0000000000000091','PBtmpl0000000000000092', - 'PBtmpl0000000000000093','PBtmpl0000000000000094','PBtmpl0000000000000097', - 'PBtmpl0000000000000098','PBtmpl0000000000000099', - 'PBtmpl0000000000000101','PBtmpl0000000000000103','PBtmpl0000000000000104', - 'PBtmpl0000000000000107','PBtmpl0000000000000108','PBtmpl0000000000000109', - 'PBtmpl0000000000000111','PBtmpl0000000000000112','PBtmpl0000000000000113', - 'PBtmpl0000000000000114','PBtmpl0000000000000115','PBtmpl0000000000000116', - 'PBtmpl0000000000000117','PBtmpl0000000000000118','PBtmpl0000000000000121', - 'PBtmpl0000000000000122','PBtmpl0000000000000123','PBtmpl0000000000000124', - 'PBtmpl0000000000000125','PBtmpl0000000000000128','PBtmpl0000000000000129', - 'PBtmpl0000000000000130','PBtmpl0000000000000131','PBtmpl0000000000000132', - 'PBtmpl0000000000000133','PBtmpl0000000000000134','PBtmpl0000000000000135', - 'PBtmpl0000000000000136','PBtmpl0000000000000137','PBtmpl0000000000000140', - 'PBtmpl0000000000000141','PBtmpl0000000000000142','PBtmpl0000000000000200', - 'PBtmpl0000000000000207', - 'PBtmpl0000000000000208','PBtmpl0000000000000209','PBtmpl0000000000000210', - 'PBtmpl000000000table54','PBtmpl00000000table094','PBtmpl00000000table109', - 'PBtmpl00000000table118','PBtmpl00000000table125','PBtmpl00000000table131', - 'PBtmpl00000000table135','PBtmplBlankStyle000001','PBtmplHelp000000000001', - 'ProjectManagerTMPL0001','ProjectManagerTMPL0002','ProjectManagerTMPL0003', - 'ProjectManagerTMPL0004','ProjectManagerTMPL0005','ProjectManagerTMPL0006', - 'PsFn7dJt4wMwBa8hiE3hOA','SQLReportDownload00001','StockDataTMPL000000001', - 'StockDataTMPL000000002','TEId5V-jEvUULsZA0wuRuA','ThingyTmpl000000000001', - 'ThingyTmpl000000000002','ThingyTmpl000000000003','ThingyTmpl000000000004', - 'TimeTrackingTMPL000001','TimeTrackingTMPL000002','TimeTrackingTMPL000003', - 'UTNFeV7B_aSCRmmaFCq4Vw','UserListTmpl0000000001','UserListTmpl0000000002', - 'UserListTmpl0000000003','WVtmpl0000000000000001','WeatherDataTmpl0000001', - 'WikiFrontTmpl000000001','WikiKeyword00000000001','WikiMPTmpl000000000001', - 'WikiPHTmpl000000000001','WikiPageEditTmpl000001','WikiPageTmpl0000000001', - 'WikiRCTmpl000000000001','WikiSearchTmpl00000001','XNd7a_g_cTvJVYrVHcx2Mw', - 'ZipArchiveTMPL00000001','aIpCmr9Hi__vgdZnDTz1jw','azCqD0IjdQSlM3ar29k5Sg', - 'bPz1yk6Y9uwMDMBcmMsSCg','eqb9sWjFEVq0yHunGV8IGw','g8W53Pd71uHB9pxaXhWf_A', - 'ilu5BrM-VGaOsec9Lm7M6Q','jME5BEDYVDlBZ8jIQA9-jQ','kj3b-X3i6zRKnhLb4ZiCLw', - 'm3IbBavqzuKDd2PGGhKPlA','mM3bjP_iG9sv5nQb4S17tQ','managefriends_________', - 'matrixtmpl000000000001','matrixtmpl000000000002','matrixtmpl000000000003', - 'matrixtmpl000000000004','matrixtmpl000000000005','nFen0xjkZn8WkpM93C9ceQ', - 'newsletter000000000001','newslettercs0000000001','newslettersubscrip0001', - 'pbtmpl0000000000000220','pbtmpl0000000000000221','q5O62aH4pjUXsrQR3Pq4lw', - 'stevecoolmenu000000001','stevenav00000000000001','stevestyle000000000001', - 'stevestyle000000000002','stevestyle000000000003','uRL9qtk7Rb0YRJ41LmHOJw', - 'vrKXEtluIhbmAS9xmPukDA','yBwydfooiLvhEFawJb0VTQ','zcX-wIUct0S_np14xxOA-A' - ]; - - for my $assetId ( @{ $defaultTemplates } ) { - my $asset = WebGUI::Asset::Template->new( $session, $assetId ); - if ( !$asset ) { - print "\n\t\tCouldn't instanciate default asset '$assetId', skipping..."; - next; - } - else { - $asset->update( { isDefault => 1 } ); - } - } - - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub badgePriceDates { - my $session = shift; - print "\tAllowing badges to have multiple prices set by date." unless $quiet; - my $db = $session->db; - $db->write("alter table EMSBadge add column earlyBirdPrice float not null default 0.0"); - $db->write("alter table EMSBadge add column earlyBirdPriceEndDate bigint"); - $db->write("alter table EMSBadge add column preRegistrationPrice float not null default 0.0"); - $db->write("alter table EMSBadge add column preRegistrationPriceEndDate bigint"); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub fixIsPublicOnTemplates { - my $session = shift; - print "\tFixing 'is public' on templates" unless $quiet; - $session->db->write('UPDATE `assetIndex` SET `isPublic` = 0 WHERE assetId IN (SELECT assetId FROM asset WHERE className IN ("WebGUI::Asset::RichEdit", "WebGUI::Asset::Snippet", "WebGUI::Asset::Template") )'); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addCSPostReceivedTemplate { - my $session = shift; - print "\tAdding Post Received Template ID field for CS..." unless $quiet; - $session->db->write("ALTER TABLE Collaboration ADD COLUMN postReceivedTemplateId VARCHAR(22) DEFAULT 'default_post_received';"); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addUrlToAssetHistory { - my $session = shift; - print "\tAdding URL column to assetHistory" unless $quiet; - $session->db->write('ALTER TABLE assetHistory ADD COLUMN url VARCHAR(255)'); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addSortOrderToFolder { - my $session = shift; - print "\tAdding Sort Order to Folder... " unless $quiet; - $session->db->write( 'alter table Folder add column sortOrder ENUM("ASC","DESC") DEFAULT "ASC"' ); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addLoginTimeStats { - my $session = shift; - print "\tAdding login time statistics... " unless $quiet; - $session->db->write( "alter table userLoginLog add column sessionId varchar(22)" ); - $session->db->write( "alter table userLoginLog add column lastPageViewed int(11)" ); - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub removeDoNothingOnDelete { - my $session = shift; - print "\tRemoving 'Do Nothing On Delete workflow if not customized... " unless $quiet; - my $workflow = WebGUI::Workflow->new($session, 'DPWwf20061030000000001'); - if ($workflow) { - my $activities = $workflow->getActivities; - if (@$activities == 0) { - # safe to delete. - for my $setting (qw(trashWorkflow purgeWorkflow changeUrlWorkflow)) { - my $setValue = $session->setting->get($setting); - if ($setValue eq 'DPWwf20061030000000001') { - $session->setting->set($setting, undef); - } - } - $workflow->delete; - } - } - print "Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub redirectChoice { - my $session = shift; - print "\tGiving a user choice about which type of redirect they'd like to perform... " unless $quiet; - $session->db->write("alter table redirect add column redirectType int not null default 302"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub addAdHocMailGroups { - my $session = shift; - print "\tAdding AdHocMailGroups to Groups.. " unless $quiet; - $session->db->write("alter table groups add column isAdHocMailGroup tinyint(4) not null default 0"); - 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 = WebGUI::Asset->getImportNode($session)->importPackage( $storage ); - - # Make the package not a package anymore - $package->update({ isPackage => 0 }); - - # Set the default flag for templates added - my $assetIds - = $package->getLineage( ['self','descendants'], { - includeOnlyClasses => [ 'WebGUI::Asset::Template' ], - } ); - 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; - } - $asset->update( { isDefault => 1 } ); - } - - 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); - setDefaultTemplates( $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; - return undef unless (-d "packages-".$toVersion); - print "\tUpdating packages.\n" unless ($quiet); - addPackage( $session, 'packages-7.5.40-7.6.10/merged.wgpkg' ); -} - diff --git a/docs/upgrades/upgrade_7.6.2-7.6.3.pl b/docs/upgrades/upgrade_7.6.2-7.6.3.pl deleted file mode 100644 index 950f95c55..000000000 --- a/docs/upgrades/upgrade_7.6.2-7.6.3.pl +++ /dev/null @@ -1,201 +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::Template; - - -my $toVersion = "7.6.3"; # make this match what version you're going to -my $quiet; # this line required - - -my $session = start(); # this line required -# upgrade functions go here -createLastUpdatedField($session); -createFieldShowOnline($session); -upgradeSyndicatedContentTemplates($session); -removeCaseInsensitiveConfig($session); - -finish($session); # this line required - - -#---------------------------------------------------------------------------- -# removes the caseInsensitiveOS flag from the config file, as it isn't used anymore -sub removeCaseInsensitiveConfig { - my $session = shift; - print "\tRemoving caseInsensitiveOS flag from config..." unless $quiet; - $session->config->delete('caseInsensitiveOS'); - $session->db->write('DROP TABLE storageTranslation'); - print " Done.\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub createLastUpdatedField { - my $session = shift; - print "\tAdding last updated field to all assets... " unless $quiet; - my $db = $session->db; - $db->write("alter table assetData add column lastModified bigint"); - $db->write("update assetData set lastModified=revisionDate"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub upgradeSyndicatedContentTemplates { - my $session = shift; - print "\tUpgrading syndicated content assets... " unless $quiet; - my $db = $session->db; - my $templates = $db->read("select distinct assetId from template where namespace='SyndicatedContent'"); - while (my ($id) = $templates->array) { - my $asset = WebGUI::Asset::Template->new($session, $id); - if (defined $asset) { - if ($asset->getId eq "DPUROtmpl0000000000001") { # this one no longer applies - $asset->trash; - next; - } - my $template = $asset->get('template'); - $template =~ s{channel.title}{channel_title}xmsi; - $template =~ s{channel.description}{channel_description}xmsi; - $template =~ s{channel.link}{channel_link}xmsi; - $template =~ s{site_link}{channel_link}xmsi; - $template =~ s{site_title}{channel_title}xmsi; - $template =~ s{descriptionFull}{description}xmsi; - $template =~ s{rss.url.0.9}{rss_url}xmsi; - $template =~ s{rss.url}{rss_url}xmsi; - $template =~ s{rss.url.0.91}{rss_url}xmsi; - $template =~ s{rss.url.1.0}{rdf_url}xmsi; - $template =~ s{rss.url.2.0}{rss_url}xmsi; - $asset->addRevision({template=>$template}); - } - } - $db->write("update SyndicatedContent set templateId='PBtmpl0000000000000065' where templateId='DPUROtmpl0000000000001'"); - $db->write("alter table SyndicatedContent drop column displayMode"); - print "DONE!\n" unless $quiet; -} - -#---------------------------------------------------------------------------- -sub createFieldShowOnline { - my $session = shift; - print "\tCreating an additional profile field 'showOnline' for the UsersOnline macro... " unless $quiet; - - # Define field properties - my $properties = { - label => q!WebGUI::International::get('Show when online?','WebGUI')!, - visible => 1, - required => 0, - protected => 1, # The UsersOnline macro requires this field for working properly. - editable => 1, - fieldType => 'YesNo', - dataDefault => 0 # Users are not shown by default. - }; - # Create field in category "preferences" - my $field = WebGUI::ProfileField->create($session, 'showOnline', $properties, 4); - - # Check for failure - if ($field == undef) { - print "Creation of the field 'showOnline' failed, possibly because it does already exist. Note that this may cause the UsersOnline macro not to work properly.\n"; - } - else { - print "DONE!\n" unless $quiet; - } - - return; -} - -# -------------- 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 = WebGUI::Asset->getImportNode($session)->importPackage( $storage ); - - # Make the package not a package anymore - $package->update({ isPackage => 0 }); - - # Set the default flag for templates added - my $assetIds - = $package->getLineage( ['self','descendants'], { - includeOnlyClasses => [ 'WebGUI::Asset::Template' ], - } ); - 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; - } - $asset->update( { isDefault => 1 } ); - } - - 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; - 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 diff --git a/docs/upgrades/upgrade_7.6.3-7.6.4.pl b/docs/upgrades/upgrade_7.6.3-7.6.4.pl deleted file mode 100644 index 7a850c9eb..000000000 --- a/docs/upgrades/upgrade_7.6.3-7.6.4.pl +++ /dev/null @@ -1,829 +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::Wobject::Collaboration; -use WebGUI::Asset::Wobject::Survey; -use WebGUI::Asset::Wobject::Survey::SurveyJSON; -use WebGUI::Asset::Wobject::Survey::ResponseJSON; -use WebGUI::ProfileField; -use WebGUI::Utility qw(isIn); -use JSON; - -my $toVersion = '7.6.4'; -my $quiet; # this line required - - -my $session = start(); # this line required - -addVersionTagMode($session); -migrateSurvey($session); -addPosMode($session); -fixFriendsGroups( $session ); -upgradeAccount( $session ); -removeProcessRecurringPaymentsFromConfig( $session ); -addExtendedProfilePrivileges( $session ); -addStorageUrlMacro( $session ); -addRecurringSubscriptionSwitch( $session ); -upgradeMatrix( $session ); -increaseDataFormSizeLimits( $session ); -finish($session); # this line required - -#---------------------------------------------------------------------------- -sub increaseDataFormSizeLimits { - my $session = shift; - print "\tIncreasing size of DataForm entry data field... " unless $quiet; - $session->db->write("ALTER TABLE DataForm_entry MODIFY COLUMN entryData mediumtext"); - print "Done.\n" unless $quiet; -} - -sub upgradeMatrix { - my $session = shift; - print "\tUpgrading matrix assets... \n" unless $quiet; - my $db = $session->db; - $db->write("alter table Matrix drop column groupToRate, drop column privilegedGroup, - drop column ratingTimeout, drop column ratingTimeoutPrivileged, drop column ratingDetailTemplateId, - drop column visitorCacheTimeout"); - $db->write("alter table Matrix add column defaultSort char(22) not null default 'score', - add column compareColorNo char(22) default '#ffaaaa', - add column compareColorLimited char(22) not null default '#ffffaa', - add column compareColorCostsExtra char(22) not null default '#ffffaa', - add column compareColorFreeAddOn char(22) not null default '#ffffaa', - add column compareColorYes char(22) not null default '#aaffaa', - add column submissionApprovalWorkflowId char(22) not null, - add column ratingsDuration int(11) not null default 7776000"); - $db->write("create table MatrixListing ( - assetId char(22) binary not null, - revisionDate bigint not null, - screenshots char(22), - description text, - version char(255), - views int(11), - compares int(11), - clicks int(11), - viewsLastIp char(255), - comparesLastIp char(255), - clicksLastIp char(255), - lastUpdated int(11), - maintainer char(22), - manufacturerName char(255), - manufacturerURL char(255), - productURL char(255), - score int(11), - primary key (assetId, revisionDate) - )"); - $db->write("create table MatrixListing_attribute ( - matrixId char(22) not null, - matrixListingId char(22) not null, - attributeId char(22) not null, - value char(255), - primary key (matrixId, matrixListingId, attributeId) - )"); - $db->write("alter table Matrix_rating rename MatrixListing_rating"); - $db->write("alter table Matrix_ratingSummary rename MatrixListing_ratingSummary"); - $db->write("alter table Matrix_field rename Matrix_attribute"); - $db->write("alter table Matrix_attribute drop column name"); - $db->write("alter table Matrix_attribute change label name char(255)"); - $db->write("alter table Matrix_attribute add column options text"); - $db->write("alter table Matrix_attribute change fieldType fieldType char(255) not null default 'MatrixCompare'"); - $db->write("alter table Matrix_attribute change fieldId attributeId char(22) not null"); - $db->write("update Matrix_attribute set fieldType = 'MatrixCompare' where fieldType = 'GoodBad'"); - $db->write("update Matrix_attribute set fieldType = 'Combo' where fieldType != 'MatrixCompare'"); - $db->write("update Matrix_listingData set value = 0 where value = 'No'"); - $db->write("update Matrix_listingData set value = 1 where value = 'Limited'"); - $db->write("update Matrix_listingData set value = 2 where value = 'Costs Extra'"); - $db->write("update Matrix_listingData set value = 3 where value = 'Free Add On'"); - $db->write("update Matrix_listingData set value = 4 where value = 'Yes'"); - - # get existing Matrix wobjects - my $matrices = WebGUI::Asset->getRoot($session)->getLineage(['descendants'], - { - statesToInclude => ['published','trash','clipboard','clipboard-limbo','trash-limbo'], - statusToInclude => ['pending','approved','deleted','archived'], - includeOnlyClasses => ['WebGUI::Asset::Wobject::Matrix'], - returnObjects => 1, - }); - - for my $matrix (@{$matrices}) - { - next unless defined $matrix; - # If the asset is in the trash, ignore the migration, we're just going - # to purge it. - if ($matrix->get("state") =~ m/trash/) { - $matrix->purge; - next; - } - - # get listings for each Matrix - my @listings = @{ $db->buildArrayRefOfHashRefs("select * from Matrix_listing where assetId =?",[$matrix->getId]) }; - foreach my $listing (@listings){ - # add MatrixListing asset for each listing - print "Migrating listing: ".$listing->{productName}."\n" unless $quiet;; - $listing->{className} = 'WebGUI::Asset::MatrixListing'; - $listing->{assetId} = 'new'; - $listing->{title} = $listing->{productName}; - $listing->{version} = $listing->{versionNumber}; - $listing->{screenshots} = $listing->{storageId}; - $listing->{ownerUserId} = $listing->{maintainerId}; - $listing->{productURL} = $listing->{productUrl}; - $listing->{manufacturerURL} = $listing->{manufacturerUrl}; - my $newMatrixListing = $matrix->addChild($listing,undef,undef,{skipAutoCommitWorkflows=>1}); - # get listingData for each listing - my $listingData = $db->buildArrayRefOfHashRefs("select * from Matrix_listingData where listingId =?",[$listing->{listingId}]); - # add listing attribute for each listing field - foreach my $attribute (@{$listingData}){ - $db->write("insert into MatrixListing_attribute (matrixId, matrixListingId, attributeId, value) values - (?,?,?,?)",[$matrix->getId,$newMatrixListing->getId,$attribute->{fieldId},$attribute->{value}]); - } - # update listingIds to MatrixListingIds in MatrixListing_rating/Summary tables - $db->write("update MatrixListing_rating set listingId = ? where listingId =?", - [$newMatrixListing->getId,$listing->{listingId}]); - $db->write("update MatrixListing_ratingSummary set listingId = ? where listingId =?", - [$newMatrixListing->getId,$listing->{listingId}]); - # migrate comments - if($listing->{forumId}){ - my $forum = WebGUI::Asset::Wobject::Collaboration->new($session, $listing->{forumId}); - my @comments = @{ $forum->getLineage(['descendants'], { - includeOnlyClasses => ["WebGUI::Asset::Post", "WebGUI::Asset::Post::Thread"], - returnObjects => 1, - }) }; - foreach my $comment (@comments){ - # add comment - my $content = $comment->get('content'); - $content =~ s/^
//;
- $content =~ s/<\/p>//;
- my $ownerUser = WebGUI::User->new($session,$comment->get('ownerUserId'));
- $newMatrixListing->addComment($content,0,$ownerUser);
- }
- }
- }
- }
- $db->write("drop table Matrix_listing");
- $db->write("drop table Matrix_listingData");
- print "DONE!\n" unless $quiet;
-}
-
-#----------------------------------------------------------------------------
-sub addExtendedProfilePrivileges {
- my $session = shift;
-
- print qq{\tExtending User Profile Privileges..} if !$quiet;
-
- my $userProfDesc = $session->db->buildHashRef('describe userProfileData');
- if(grep { $_ =~ /^wg_privacySettings/ } keys %{$userProfDesc}) {
- $session->db->write("alter table userProfileData drop column wg_privacySettings");
- }
- $session->db->write("alter table userProfileData add wg_privacySettings longtext");
-
- my $fields = WebGUI::ProfileField->getFields($session);
-
- my $users = $session->db->buildArrayRef("select userId from users");
- foreach my $userId (@{$users}) {
- my $hash = {};
- foreach my $field (@{$fields}) {
- if($field->getId eq "publicEmail") {
- my $u = WebGUI::User->new($session,$userId);
- $hash->{$field->getId} = $u->profileField("publicEmail") ? "all" : "none";
- next;
- }
- $hash->{$field->getId} = $field->isViewable ? "all" : "none";
- }
- my $json = JSON->new->encode($hash);
- $session->db->write("update userProfileData set wg_privacySettings=? where userId=?",[$json,$userId]);
- }
-
- #Delete the public email field
- my $publicEmail = WebGUI::ProfileField->new($session,"publicEmail");
- if(defined $publicEmail) {
- $publicEmail->delete;
- }
-
- print qq{Finished\n} if !$quiet;
-}
-
-
-#----------------------------------------------------------------------------
-sub addPosMode {
- my $session = shift;
-
- print qq{\tAdding Point of Sale mode to the Shop...} if !$quiet;
-
- my $db = $session->db();
- my $setting = $session->setting();
-
- $setting->add("groupIdCashier","3");
- $db->write(q{ALTER TABLE cart drop column couponId});
- $db->write(q{ALTER TABLE cart add column posUserId char(22) binary});
- $db->write(q{ALTER TABLE transaction add column cashierUserId char(22) binary});
- $db->write(q{update transaction set cashierUserId=userId});
- $db->write(q{ALTER TABLE addressBook add column defaultAddressId char(22) binary});
-
- print qq{Finished\n} if !$quiet;
-}
-
-#----------------------------------------------------------------------------
-sub addStorageUrlMacro {
- my $session = shift;
- print qq{\tAdding StorageUrl Macro... } if !$quiet;
- $session->config->addToHash( "macros", "StorageUrl" => "StorageUrl" );
- print qq{Done!\n} if !$quiet;
-}
-
-#----------------------------------------------------------------------------
-sub removeProcessRecurringPaymentsFromConfig {
- my $session = shift;
-
- print qq{\tRemoving old ProcessRecurringPayments workflow activity from config...} if !$quiet;
-
- my $config = $session->config();
- my $workflowActivities = $config->get('workflowActivities');
- my @noObjects = ();
- foreach my $activity (@{ $workflowActivities->{'None'}}) {
- push @noObjects, $activity unless
- $activity eq 'WebGUI::Workflow::Activity::ProcessRecurringPayments';
- }
- $workflowActivities->{'None'} = [ @noObjects ];
- $config->set('workflowActivities', $workflowActivities);
- print qq{Done!\n} if !$quiet;
-}
-
-#----------------------------------------------------------------------------
-# This method add support for versionTagMode
-#
-sub addVersionTagMode {
- my $session = shift;
-
- print qq{\tAdding support for versionTagMode...} if !$quiet;
-
- my $db = $session->db();
- my $setting = $session->setting();
-
-
- $db->write(q{ALTER TABLE `assetVersionTag` ADD `isSiteWide` BOOL NOT NULL DEFAULT '0'});
-
- ##Use the API...
- my $newField = WebGUI::ProfileField->create(
- $session,
- 'versionTagMode',
- {
- label => 'WebGUI::International::get("version tag mode","WebGUI");',
- visible => 1,
- required => 0,
- protected => 1,
- editable => 1,
- forceImageOnly => 0,
- requiredForPasswordRecovery => 0,
- fieldType => 'selectBox',
- possibleValues => q|
-{
- inherited => WebGUI::International::get("versionTagMode inherited"),
- multiPerUser => WebGUI::International::get("versionTagMode multiPerUser"),
- singlePerUser => WebGUI::International::get("versionTagMode singlePerUser"),
- siteWide => WebGUI::International::get("versionTagMode siteWide"),
- autoCommit => WebGUI::International::get("versionTagMode autoCommit"),
-}
-|,
- dataDefault => 'inherited',
- }
- );
- $newField->setCategory(4);
- $setting->add('versionTagMode', '');
-
- # Keep autoRequestCommit if enabled
- my $versionTagMode = q{multiPerUser};
- if ($setting->get('autoRequestCommit')) {
- $versionTagMode = q{autoCommit};
- }
- $setting->set('versionTagMode', $versionTagMode);
-
- $setting->remove('autoRequestCommit');
-
- print qq{Finished\n} if !$quiet;
-
- return;
-} #addVersionTagMode
-
-
-#----------------------------------------------------------------------------
-# This method migrates the the old survey system and existing surveys to the new survey system
-#
-#
-sub migrateSurvey{
- my $session = shift;
- print "\tMigrating surveys to new survey system..." unless $quiet;
-
- _moveOldSurveyTables($session);
- _addSurveyTables($session);
-
-
- my $surveys = $session->db->buildArrayRefOfHashRefs(
- "SELECT * FROM Survey_old s
- where s.revisionDate = (select max(s1.revisionDate) from Survey_old s1 where s1.assetId = s.assetId)"
- );
-
- for my $survey(@$surveys){
-
- #move over survey
- $session->db->write("insert into Survey
- values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
- [
- $$survey{groupToTakeSurvey},$$survey{groupToViewReports},$$survey{groupToViewReports},'PBtmpl0000000000000064','PBtmpl0000000000000063',$$survey{maxResponsesPerUser},
- $$survey{gradebookTemplateId},$$survey{assetId},'PBtmpl0000000000000061',$$survey{revisionDate},'GRUNFctldUgop-qRLuo_DA','AjhlNO3wZvN5k4i4qioWcg',
- 'wAc4azJViVTpo-2NYOXWvg', '1oBRscNIcFOI-pETrCOspA','d8jMMMRddSQ7twP4l1ZSIw','CxMpE_UPauZA3p8jdrOABw','','{}',0,0,0
- ]
- );
-
- my $sjson = WebGUI::Asset::Wobject::Survey::SurveyJSON->new();
- #move over sections
- my $sql = "select * from Survey_section_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber";
- my $sections = $session->db->buildArrayRefOfHashRefs($sql);
- my $sId = 0;
- my %sMap;
- for my $section(@$sections){
- my $random = $$section{questionOrder} eq 'random' ? 1 : 0;
- $sMap{$$section{Survey_sectionId}} = $sId;
- $sjson->update([$sId++],
- {
- 'text','','title',$$section{sectionName},'variable',$$section{Survey_sectionId},
- 'questionsPerPage',$$survey{questionsPerPage},'randomizeQuestions',$random
- }
- );
- }
-
- #move over questions
- $sql = "select * from Survey_question_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber";
- my $questions = $session->db->buildArrayRefOfHashRefs($sql);
- my $qId = 0;
- my %qMap = ('radioList','Multiple Choice','text','Text','HTMLArea','Text','textArea','Text');
- my %qS;
- my $lastSection = $$questions[0]->{Survey_sectionid};
- for my $question(@$questions){
- if($lastSection ne $$question{Survey_sectionId}){
- $qId = 0;
- }
- $qMap{$$question{Survey_questionId}} = $qId;
- $qS{$$question{Survey_questionId}} = $$question{Survey_sectionId};
- $sjson->update([$sMap{$$question{Survey_sectionId}},$qId++],
- {
- 'text',$$question{question},'variable',$$question{Survey_questionId},'allowComment',$$question{allowComment},
- 'randomizeAnswers',$$question{randomizeAnswers},'questionType',$qMap{$$question{answerFieldType}}
- }
- );
- $lastSection = $$question{Survey_sectionId};
- }
-
- #move over answers
- $sql = "select * from Survey_answer_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber";
- my $answers = $session->db->buildArrayRefOfHashRefs($sql);
- my $aId = 0;
- my %aMap;
- my $lastQuestion = $$answers[0]->{Survey_questionId};
- for my $answer(@$answers){
- if($lastQuestion ne $$answer{Survey_questionId}){
- $aId = 0;
- }
- $aMap{$$survey{Survey_answerId}} = $aId;
- $sjson->update([$sMap{$qS{$$answer{Survey_questionId}}},$qMap{$$answer{Survey_questionId}},$aId++],
- {
- 'text',$$answer{answer},'goto',$$answer{Survey_questionId},'recordedAnswer',$$answer{answer},
- 'isCorrect',$$answer{isCorrect},'NEED TO MAP QUESTION TYPES'
- }
- );
- $lastQuestion = $$answer{Survey_questionId};
- }
-
- my $date = $session->db->quickScalar('select max(revisionDate) from Survey where assetId = ?',[$$survey{assetId}]);
- $session->db->write('update Survey set surveyJSON = ? where assetId = ? and revisionDate = ?',[$sjson->freeze,$$survey{assetId},$date]);
-
- my $rjson = WebGUI::Asset::Wobject::Survey::ResponseJSON->new(undef,undef,$sjson);
- $rjson->createSurveyOrder();
- #move over responses
- $sql = "select * from Survey_response_old where Survey_id = '$$survey{Survey_id}'";
- my $responses = $session->db->buildArrayRefOfHashRefs($sql);
- for my $response(@$responses){
- $session->db->write('insert into Survey_response values(?,?,?,?,?,?,?,?,?,?)',
- [
- $$survey{assetId},$$response{Survey_responseId},$$response{userId},$$response{userName},$$response{ipAddress},$$response{startDate},$$response{endDate},
- $$response{isComplete},undef,'{}'
- ]
- );
- #$sql = "select * from Survey_questionResponse_old where Survey_responseId = '$$response{Survey_responseId}'";
- #my $qresponses = $session->db->buildArrayRefOfHashRefs($sql);
- #for my $qresponse(@$qresponses){
- #}
- }
- }
-
- print "Finished\n" unless $quiet;
-}
-
-
-sub _moveOldSurveyTables{
- my $session = shift;
- eval{
- $session->db->write("alter table Survey rename to Survey_old");
- $session->db->write("alter table Survey_answer rename to Survey_answer_old");
- $session->db->write("alter table Survey_question rename to Survey_question_old");
- $session->db->write("alter table Survey_section rename to Survey_section_old");
- $session->db->write("alter table Survey_response rename to Survey_response_old");
- $session->db->write("alter table Survey_questionResponse rename to Survey_questionResponse_old");
- };
-}
-
-sub _addSurveyTables{
- my $session = shift;
- $session->db->write("DROP TABLE IF EXISTS `Survey`");
- $session->db->write("
-CREATE TABLE `Survey` (
- `groupToTakeSurvey` char(22) character set utf8 collate utf8_bin NOT NULL default '2',
- `groupToEditSurvey` char(22) character set utf8 collate utf8_bin NOT NULL default '3',
- `groupToViewReports` char(22) character set utf8 collate utf8_bin NOT NULL default '3',
- `responseTemplateId` char(22) character set utf8 collate utf8_bin NOT NULL,
- `overviewTemplateId` char(22) character set utf8 collate utf8_bin NOT NULL,
- `maxResponsesPerUser` int(11) NOT NULL default '1',
- `gradebookTemplateId` char(22) character set utf8 collate utf8_bin NOT NULL,
- `assetId` char(22) character set utf8 collate utf8_bin NOT NULL,
- `templateId` char(22) character set utf8 collate utf8_bin NOT NULL,
- `revisionDate` bigint(20) NOT NULL default '0',
- `surveyEditTemplateId` char(22) default NULL,
- `answerEditTemplateId` char(22) default NULL,
- `questionEditTemplateId` char(22) default NULL,
- `sectionEditTemplateId` char(22) default NULL,
- `surveyTakeTemplateId` char(22) default NULL,
- `surveyQuestionsId` char(22) default NULL,
- `exitURL` varchar(512) default NULL,
- `surveyJSON` longblob,
- `timeLimit` mediumint(8) unsigned NOT NULL,
- `showProgress` tinyint(3) unsigned NOT NULL default '0',
- `showTimeLimit` tinyint(3) unsigned NOT NULL default '0',
- PRIMARY KEY (`assetId`,`revisionDate`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-");
- $session->db->write("DROP TABLE IF EXISTS `Survey_response`");
- $session->db->write("
-CREATE TABLE `Survey_response` (
- `assetId` char(22) character set utf8 collate utf8_bin NOT NULL,
- `Survey_responseId` char(22) character set utf8 collate utf8_bin NOT NULL,
- `userId` char(22) default NULL,
- `username` char(255) default NULL,
- `ipAddress` char(15) default NULL,
- `startDate` bigint(20) NOT NULL default '0',
- `endDate` bigint(20) NOT NULL default '0',
- `isComplete` int(11) NOT NULL default '0',
- `anonId` varchar(255) default NULL,
- `responseJSON` longblob,
- PRIMARY KEY (`Survey_responseId`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
- ");
- $session->db->write("DROP TABLE IF EXISTS `Survey_tempReport`");
- $session->db->write("
-CREATE TABLE `Survey_tempReport` (
- `assetId` char(22) NOT NULL,
- `Survey_responseId` char(22) NOT NULL,
- `order` smallint(5) unsigned NOT NULL,
- `sectionNumber` smallint(5) unsigned NOT NULL,
- `sectionName` varchar(512) default NULL,
- `questionNumber` smallint(5) unsigned NOT NULL,
- `questionName` varchar(512) default NULL,
- `questionComment` mediumtext,
- `answerNumber` smallint(5) unsigned default NULL,
- `answerValue` mediumtext,
- `answerComment` mediumtext,
- `entryDate` bigint(20) unsigned NOT NULL COMMENT 'UTC Unix Time',
- `isCorrect` tinyint(3) unsigned default NULL,
- `value` int(11) default NULL,
- `fileStoreageId` char(22) default NULL COMMENT 'Not implemented yet',
- PRIMARY KEY (`assetId`,`Survey_responseId`,`order`),
- KEY `assetId` (`assetId`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
- ");
-}
-
-#----------------------------------------------------------------------------
-sub fixFriendsGroups {
- my $session = shift;
- my $users = $session->db->buildArrayRef("select userId from users where friendsGroup is not null && friendsGroup != ''");
- foreach my $userId (@{$users}) {
- #purge the admin group
- WebGUI::User->new($session,$userId)->friends->deleteGroups([3]);
- }
-}
-
-#----------------------------------------------------------------------------
-sub addRecurringSubscriptionSwitch {
- my $session = shift;
-
- print "\tAdding a recurring/nonrecurring switch to subscriptions... " unless $quiet;
-
- $session->db->write('alter table Subscription add column recurringSubscription tinyint(1) not null default 1');
-
- print "Done!\n" unless $quiet;
-}
-
-#----------------------------------------------------------------------------
-sub upgradeAccount {
- my $session = shift;
- my $config = $session->config;
- my $setting = $session->setting;
-
- print "\tUpgrading WebGUI Account System... " unless $quiet;
- #Add account properties to config file
- $session->config->delete("account"); #Delete account if it exists
- $session->config->set("account",[
- {
- identifier => "profile",
- title => "^International(title,Account_Profile);",
- className => "WebGUI::Account::Profile"
- },
- {
- identifier => "inbox",
- title => "^International(title,Account_Inbox);",
- className => "WebGUI::Account::Inbox"
- },
- {
- identifier => "friends",
- title => "^International(title,Account_Friends);",
- className => "WebGUI::Account::Friends"
- },
- {
- identifier => "contributions",
- title => "^International(title,Account_Contributions);",
- className => "WebGUI::Account::Contributions"
- },
- {
- identifier => "shop",
- title => "^International(title,Account_Shop);",
- className => "WebGUI::Account::Shop"
- },
- {
- identifier => "user",
- title => "^International(title,Account_User);",
- className => "WebGUI::Account::User"
- },
- ]);
- $session->config->set("profileModuleIdentifier","profile");
- #Add the content handler to the config file if it's not there
- my $oldHandlers = $session->config->get( "contentHandlers" );
- unless (isIn("WebGUI::Content::Account",@{$oldHandlers})) {
- my @newHandlers;
- for my $handler ( @{ $oldHandlers } ) {
- if ( $handler eq "WebGUI::Content::Operation" ) {
- push @newHandlers, "WebGUI::Content::Account";
- }
- push @newHandlers, $handler;
- }
- $session->config->set( "contentHandlers", \@newHandlers );
- }
-
- #Add new macros to the config file
- $session->config->addToHash("macros","BackToSite","BackToSite");
- $session->config->addToHash("macros","If","If");
- $session->config->addToHash("macros","DeactivateAccount","DeactivateAccount");
-
-
- #Add the settings for the profile module
- $setting->add("profileStyleTemplateId",""); #Use the userStyle by default
- $setting->add("profileLayoutTemplateId","FJbUTvZ2nUTn65LpW6gjsA");
- $setting->add("profileEditTemplateId","75CmQgpcCSkdsL-oawdn3Q");
- $setting->add("profileViewTempalteId","2CS-BErrjMmESOtGT90qOg");
- $setting->add("profileErrorTempalteId","MBmWlA_YEA2I6D29OMGtRg");
-
- #Add the settings for the inbox module
- $setting->add("inboxStyleTemplateId",""); #Use the userStyle by default
- $setting->add("inboxLayoutTempalteId","gfZOwaTWYjbSoVaQtHBBEw");
- $setting->add("inboxViewTemplateId","c8xrwVuu5QE0XtF9DiVzLw");
- $setting->add("inboxViewMessageTemplateId","0n4HtbXaWa_XJHkFjetnLQ");
- $setting->add("inboxSendMessageTemplateId","6uQEULvXFgCYlRWnYzZsuA");
- $setting->add("inboxErrorTemplateId","ErEzulFiEKDkaCDVmxUavw");
- $setting->add("inboxMessageConfirmationTemplateId","DUoxlTBXhVS-Zl3CFDpt9g");
- #Invitations
- $setting->add("inboxManageInvitationsTemplateId","1Q4Je3hKCJzeo0ZBB5YB8g");
- $setting->add("inboxViewInvitationTemplateId","VBkY05f-E3WJS50WpdKd1Q");
- $setting->add("inboxInvitationConfirmTemplateId","5A8Hd9zXvByTDy4x-H28qw");
- #Inbox Invitations
- $setting->add("inboxInviteUserEnabled",$session->setting->get("userInvitationsEnabled"));
- $setting->add("inboxInviteUserRestrictSubject","0");
- $setting->add("inboxInviteUserSubject","^International(invite subject,Account_Inbox,^u;);");
- $setting->add("inboxInviteUserRestrictMessage","0");
- $setting->add("inboxInviteUserMessage","^International(invite message,Account_Inbox);");
- $setting->add("inboxInviteUserMessageTemplateId","XgcsoDrbC0duVla7N7JAdw");
- $setting->add("inboxInviteUserTemplateId","cR0UFm7I1qUI2Wbpj--08Q");
- $setting->add("inboxInviteUserConfirmTemplateId","SVIhz68689hwUGgcDM-gWw");
-
- #Add the settings for the friends module
- $setting->add("friendsStyleTemplateId",""); #Use the userStyle by default
- $setting->add("friendsLayoutTempalteId","zrNpGbT3odfIkg6nFSUy8Q");
- $setting->add("friendsViewTemplateId","1Yn_zE_dSiNuaBGNLPbxtw");
- $setting->add("friendsEditTemplateId","AZFU33p0jpPJ-E6qLSWZng");
- $setting->add("friendsSendRequestTemplateId","AGJBGviWGAwjnwziiPjvDg");
- $setting->add("friendsErrorTemplateId","7Ijdd8SW32lVgg2H8R-Aqw");
- $setting->add("friendsConfirmTemplateId","K8F0j_cq_jgo8dvWY_26Ag");
- $setting->add("friendsRemoveConfirmTemplateId","G5V6neXIDiFXN05oL-U3AQ");
-
- #Add the settings for the user module
- $setting->add("userAccountStyleTemplateId",""); #Use the userStyle by default
- $setting->add("userAccountLayoutTemplateId","9ThW278DWLV0-Svf68ljFQ");
-
- #Add the settings for the shop module
- $setting->add("shopStyleTemplateId",""); #Use the userStyle by default
- $setting->add("shopLayoutTemplateId","aUDsJ-vB9RgP-AYvPOy8FQ");
-
- #Add the settings for the contributions module
- $setting->add("contribStyleTemplateId",""); #Use the userStyle by default
- $setting->add("contribLayoutTemplateId","b4n3VyUIsAHyIvT-W-jziA");
- $setting->add("contribViewTemplateId","1IzRpX0tgW7iuCfaU2Kk0A");
-
-
- #Add inbox changes
- $session->db->write(q{
- create table inbox_messageState (
- messageId char(22) binary not null,
- userId char(22) binary not null,
- isRead tinyint(4) not null default 0,
- repliedTo tinyint(4) not null default 0,
- deleted tinyint(4) not null default 0,
- primary key (messageId, userId)
- )
- });
-
- #Update the inbox
- my $sth = $session->db->read("select messageId, groupId, userId, status from inbox");
- while(my ($messageId,$groupId,$userId,$status) = $sth->array) {
- my $repliedTo = $status eq "replied";
- my $isRead = ($status ne "unread" && $status ne "pending")?1:0;
- my $deleted = 0;
-
- if($status eq "deleted") {
- #Purge deleted messages
- $session->db->write("delete from inbox where messageId=?",[$messageId]);
- next;
- }
-
- if($groupId) {
- my $g = WebGUI::Group->new($session,$groupId);
- my $users = $g->getAllUsers;
- foreach my $userId (@{$users}) {
- $session->db->write(
- q{ REPLACE INTO inbox_messageState (messageId,userId,isRead,repliedTo,deleted) VALUES (?,?,?,?,?) },
- [$messageId,$userId,$isRead,$repliedTo,$deleted]
- );
- }
- }
-
- if($userId) {
- $session->db->write(
- q{ REPLACE INTO inbox_messageState (messageId,userId,isRead,repliedTo,deleted) VALUES (?,?,?,?,?) },
- [$messageId,$userId,$isRead,$repliedTo,$deleted]
- );
- }
-
- if($status ne "completed" && $status ne "pending") {
- $session->db->write(
- q{ UPDATE inbox SET status='active' WHERE messageId=? },
- [$messageId]
- );
- }
- }
-
- #Add the profile field changes
- $session->db->write(q{alter table userProfileCategory add column shortLabel char(255) default NULL after label});
- $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("misc info short","WebGUI");' where profileCategoryId='1'});
- $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("contact info short","WebGUI");' where profileCategoryId='2'});
- $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("personal info short","WebGUI");' where profileCategoryId='3'});
- $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("preferences short","WebGUI");' where profileCategoryId='4'});
- $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("home info short","WebGUI");' where profileCategoryId='5'});
- $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("work info short","WebGUI");' where profileCategoryId='6'});
- $session->db->write(q{update userProfileCategory set shortLabel='WebGUI::International::get("demographic info short","WebGUI");' where profileCategoryId='7'});
-
- $session->db->write(q{alter table userProfileData modify publicProfile char(10) default 'none'});
- $session->db->write(q{update userProfileData set publicProfile='none' where publicProfile='0' || publicProfile is NULL || publicProfile=''});
- $session->db->write(q{update userProfileData set publicProfile='all' where publicProfile='1'});
- $session->db->write(q{REPLACE INTO `userProfileField` VALUES ('publicProfile','WebGUI::International::get(861)',1,0,'RadioList','{ all=>WebGUI::International::get(\'public label\',\'Account_Profile\'), friends=>WebGUI::International::get(\'friends only label\',\'Account_Profile\'), none=>WebGUI::International::get(\'private label\',\'Account_Profile\')}','[\"none\"]',8,'4',1,1,0,0,0,'')});
-
- #Clean up old templates and settings
- my $oldsettings = {
- editUserProfileTemplate => 'Operation/Profile/Edit',
- viewUserProfileTemplate => 'Operation/Profile/View',
- manageFriendsTemplateId => 'friends/manage',
- sendPrivateMessageTemplateId => 'Inbox/SendPrivateMessage',
- viewInboxTemplateId => 'Inbox',
- viewInboxMessageTemplateId => 'Inbox/Message',
- userInvitationsEmailTemplateId => 'userInvite/Email',
- userInvitationsEnabled => 'userInvite',
- userInvitationsEmailExists => '',
- };
-
- foreach my $setting (keys %{$oldsettings}) {
- #Remove the setting
- $session->setting->remove($setting);
- #$session->db->write("delete from settings where name=?",[$setting]);
- #Remove all the templates with the related namespace
- next if ($oldsettings->{$setting} eq "");
- my $assets = $session->db->buildArrayRef("select distinct assetId from template where namespace=?",[$oldsettings->{$setting}]);
- #Purge the template
- foreach my $assetId (@{$assets}) {
- WebGUI::Asset->newByDynamicClass($session,$assetId)->purge;
- }
- }
-
- 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 = WebGUI::Asset->getImportNode($session)->importPackage( $storage );
-
- # Make the package not a package anymore
- $package->update({ isPackage => 0 });
-
- # Set the default flag for templates added
- my $assetIds
- = $package->getLineage( ['self','descendants'], {
- includeOnlyClasses => [ 'WebGUI::Asset::Template' ],
- } );
- 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;
- }
- $asset->update( { isDefault => 1 } );
- }
-
- 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;
- 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
diff --git a/docs/upgrades/upgrade_7.6.4-7.6.5.pl b/docs/upgrades/upgrade_7.6.4-7.6.5.pl
deleted file mode 100644
index 433539117..000000000
--- a/docs/upgrades/upgrade_7.6.4-7.6.5.pl
+++ /dev/null
@@ -1,223 +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;
-
-
-my $toVersion = "7.6.5"; # make this match what version you're going to
-my $quiet; # this line required
-
-my $session = start(); # this line required
-
-fixAccountMisspellings( $session );
-removeTemplateHeadBlock( $session );
-updateMatrixListingScores( $session );
-removeSqlForm( $session );
-
-# upgrade functions go here
-finish($session); # this line required
-
-#----------------------------------------------------------------------------
-
-sub removeSqlForm {
- my $session = shift;
- print "\tOptionally removing Web Services Client...\n" unless $quiet;
- my $db = $session->db;
- unless ($db->quickScalar("select count(*) from asset where className='WebGUI::Asset::Wobject::WSClient'")) {
- print "\t\tNot using it, so we're uninstalling it.\n" unless $quiet;
- $session->config->delete("assets/WebGUI::Asset::Wobject::WSClient");
- my @ids = $db->buildArray("select distinct assetId from template where namespace = 'WSClient'");
- push @ids, qw(5YAbuwiVFUx-z8hcOAnsdQ);
- foreach my $id (@ids) {
- my $asset = WebGUI::Asset->newByDynamicClass($session, $id);
- if (defined $asset) {
- $asset->purge;
- }
- }
- $db->write("drop table WSClient");
- }
- else {
- print "\t\tThis site uses Web Services Client, so we won't uninstall it.\n" unless $quiet;
- }
-}
-
-#----------------------------------------------------------------------------
-
-sub updateMatrixListingScores {
- my $session = shift;
- print "\tUpdating score for every MatrixListing asset... " unless $quiet;
- my $matrixListings = WebGUI::Asset->getRoot($session)->getLineage(['descendants'],
- {
- statesToInclude => ['published','trash','clipboard','clipboard-limbo','trash-limbo'],
- statusToInclude => ['pending','approved','deleted','archived'],
- includeOnlyClasses => ['WebGUI::Asset::MatrixListing'],
- returnObjects => 1,
- });
-
- for my $matrixListing (@{$matrixListings})
- {
- next unless defined $matrixListing;
- my $score = $session->db->quickScalar("select sum(value) from MatrixListing_attribute
- left join Matrix_attribute using(attributeId)
- where matrixListingId = ? and fieldType = 'MatrixCompare'",
- [$matrixListing->getId]);
- $matrixListing->update({score => $score});
- }
- print "DONE!\n" unless $quiet;
-}
-
-#----------------------------------------------------------------------------
-
-sub removeTemplateHeadBlock {
- my $session = shift;
- print "\tMerging Template head blocks into the Extra Head Tags field... " unless $quiet;
- my $sth = $session->db->prepare('select assetId, revisionDate, headBlock from template');
- $sth->execute();
- TMPL: while (my $templateData = $sth->hashRef) {
- my $template = WebGUI::Asset->new($session,
- $templateData->{assetId}, 'WebGUI::Asset::Template',
- $templateData->{revisionDate},
- );
- next TMPL unless defined $template;
- if ($template->get('namespace') eq 'style') {
- $template->update({
- extraHeadTags => '',
- });
- }
- else {
- $template->update({
- extraHeadTags => $template->getExtraHeadTags . $templateData->{headBlock},
- });
- }
- }
- $session->db->write('ALTER TABLE template DROP COLUMN headBlock');
- # and here's our code
- 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;
-#}
-
-#----------------------------------------------------------------------------
-#Describe what our function does
-sub fixAccountMisspellings {
- my $session = shift;
- my $setting = $session->setting;
- print "\tFix misspellings in Account settings... " unless $quiet;
- # and here's our code
- $setting->add("profileViewTemplateId", $setting->get('profileViewTempalteId') );
- $setting->add("profileErrorTemplateId", $setting->get('profileErrorTempalteId') );
- $setting->add("inboxLayoutTemplateId", $setting->get('inboxLayoutTempalteId') );
- $setting->add("friendsLayoutTemplateId", $setting->get('friendsLayoutTempalteId'));
- $setting->remove("profileViewTemplateId");
- $setting->remove("profileErrorTemplateId");
- $setting->remove("inboxLayoutTemplateId");
- $setting->remove("friendsLayoutTemplateId");
- 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 = WebGUI::Asset->getImportNode($session)->importPackage( $storage );
-
- # Make the package not a package anymore
- $package->update({ isPackage => 0 });
-
- # Set the default flag for templates added
- my $assetIds
- = $package->getLineage( ['self','descendants'], {
- includeOnlyClasses => [ 'WebGUI::Asset::Template' ],
- } );
- 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;
- }
- $asset->update( { isDefault => 1 } );
- }
-
- 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;
- 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
diff --git a/docs/upgrades/upgrade_7.6.5-7.6.6.pl b/docs/upgrades/upgrade_7.6.5-7.6.6.pl
deleted file mode 100644
index 2bc8956e4..000000000
--- a/docs/upgrades/upgrade_7.6.5-7.6.6.pl
+++ /dev/null
@@ -1,145 +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.6.6';
-my $quiet; # this line required
-
-
-my $session = start(); # this line required
-
-# upgrade functions go here
-addMatrixEditListingTemplate( $session );
-lengthenThingyDefaultValues($session);
-
-finish($session); # this line required
-
-
-#----------------------------------------------------------------------------
-# Describe what our function does
-#sub exampleFunction {
-# my $session = shift;
-# print "\tWe're doing some stuff here that you should know about... " unless $quiet;
-# # and here's our code
-# print "DONE!\n" unless $quiet;
-#}
-
-# Add editListingTemplate property to Matrix
-sub addMatrixEditListingTemplate {
- my $session = shift;
- print "Add editListingTemplate property to Matrix\t... " unless $quiet;
- $session->db->write("alter table Matrix add editListingTemplateId char(22)");
- print "DONE!\n" unless $quiet;
-}
-
-#----------------------------------------------------------------------------
-# Describe what our function does
-sub lengthenThingyDefaultValues {
- my $session = shift;
- print "\tMake sure that Thingy fields can have a default value size appropriate to their field type... " unless $quiet;
- # and here's our code
- $session->db->write('alter table Thingy_fields modify defaultValue longtext');
- 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 = WebGUI::Asset->getImportNode($session)->importPackage( $storage );
-
- # Make the package not a package anymore
- $package->update({ isPackage => 0 });
-
- # Set the default flag for templates added
- my $assetIds
- = $package->getLineage( ['self','descendants'], {
- includeOnlyClasses => [ 'WebGUI::Asset::Template' ],
- } );
- 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;
- }
- $asset->update( { isDefault => 1 } );
- }
-
- 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;
- 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
diff --git a/docs/upgrades/upgrade_7.6.6-7.6.7.pl b/docs/upgrades/upgrade_7.6.6-7.6.7.pl
deleted file mode 100644
index 92a6b43bf..000000000
--- a/docs/upgrades/upgrade_7.6.6-7.6.7.pl
+++ /dev/null
@@ -1,125 +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.6.7';
-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;
-
- # 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 = WebGUI::Asset->getImportNode($session)->importPackage( $storage );
-
- # Make the package not a package anymore
- $package->update({ isPackage => 0 });
-
- # Set the default flag for templates added
- my $assetIds
- = $package->getLineage( ['self','descendants'], {
- includeOnlyClasses => [ 'WebGUI::Asset::Template' ],
- } );
- 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;
- }
- $asset->update( { isDefault => 1 } );
- }
-
- 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;
- 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
diff --git a/docs/upgrades/upgrade_7.6.7-7.6.8.pl b/docs/upgrades/upgrade_7.6.7-7.6.8.pl
deleted file mode 100644
index 4d0bc27b4..000000000
--- a/docs/upgrades/upgrade_7.6.7-7.6.8.pl
+++ /dev/null
@@ -1,195 +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::File::GalleryFile;
-use WebGUI::Shop::Pay;
-use WebGUI::Shop::PayDriver;
-
-
-my $toVersion = '7.6.8';
-my $quiet; # this line required
-
-
-my $session = start(); # this line required
-
-# upgrade functions go here
-setDefaultItransactCredentialTemplate($session);
-hideGalleryPhotos($session);
-addSubscriptionRedeemTemplateSetting($session);
-reFixAccountMisspellings($session);
-finish($session); # this line required
-
-
-#----------------------------------------------------------------------------
-# Describe what our function does
-sub setDefaultItransactCredentialTemplate {
- my $session = shift;
- print "\tSet default ITransact Credentials template if it is not set... " unless $quiet;
- # and here's our code
- my $pay = WebGUI::Shop::Pay->new($session);
- my $drivers = $pay->getPaymentGateways($session);
- DRIVER: foreach my $driver (@{ $drivers }) {
- ##Only work on ITransact drivers
- next DRIVER unless $driver && $driver->className eq "WebGUI::Shop::PayDriver::ITransact";
- my $properties = $driver->get();
- ##And only ones that don't already have a template set
- next DRIVER if $properties->{credentialsTemplateId};
- $properties->{credentialsTemplateId} = 'itransact_credentials1';
- $driver->update($properties);
- }
-
- print "DONE!\n" unless $quiet;
-}
-
-#----------------------------------------------------------------------------
-# Describe what our function does
-sub addSubscriptionRedeemTemplateSetting {
- my $session = shift;
- print "\tAdd a field to the Subscription Asset so the user can select which Redeem Subscription code template to use... " unless $quiet;
- # and here's our code
- $session->db->write(<