aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSem <sembrestels@riseup.net>2012-07-08 15:42:39 +0200
committercash <cash.costello@gmail.com>2013-03-30 15:06:27 -0400
commitd456d462674a72c270a9a1ce4066d5318e25a07a (patch)
tree5f0e41392cf8e7f68159bb8be4437c639b51d272
parent324f4ed234638c66815fbaf2601373c869d023b2 (diff)
downloadelgg-d456d462674a72c270a9a1ce4066d5318e25a07a.tar.gz
elgg-d456d462674a72c270a9a1ce4066d5318e25a07a.tar.bz2
Refs #1708. Restore disappeared subpages, which its parent page was top_page and was deleted.
-rw-r--r--mod/pages/start.php13
-rw-r--r--mod/pages/upgrades/2012061800.php43
2 files changed, 56 insertions, 0 deletions
diff --git a/mod/pages/start.php b/mod/pages/start.php
index 8debeef24..c1183c9bf 100644
--- a/mod/pages/start.php
+++ b/mod/pages/start.php
@@ -82,6 +82,8 @@ function pages_init() {
// register ecml views to parse
elgg_register_plugin_hook_handler('get_views', 'ecml', 'pages_ecml_views_hook');
+
+ elgg_register_event_handler('upgrade', 'system', 'pages_run_upgrades');
}
/**
@@ -362,3 +364,14 @@ function pages_ecml_views_hook($hook, $entity_type, $return_value, $params) {
return $return_value;
}
+
+/**
+ * Process upgrades for the pages plugin
+ */
+function pages_run_upgrades() {
+ $path = elgg_get_plugins_path() . 'pages/upgrades/';
+ $files = elgg_get_upgrade_files($path);
+ foreach ($files as $file) {
+ include "$path{$file}";
+ }
+}
diff --git a/mod/pages/upgrades/2012061800.php b/mod/pages/upgrades/2012061800.php
new file mode 100644
index 000000000..fe39faea5
--- /dev/null
+++ b/mod/pages/upgrades/2012061800.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Restore disappeared subpages, which its parent page was top_page and was deleted,
+ * by setting it's subtype to page_top.
+ *
+ */
+
+
+/**
+ * Condense first annotation into object
+ *
+ * @param ElggObject $page
+ */
+function pages_2012061800($page) {error_log($page->guid);
+ $dbprefix = elgg_get_config('dbprefix');
+ $subtype_id = add_subtype('object', 'page_top');
+ update_data("UPDATE {$dbprefix}entities
+ set subtype='$subtype_id' WHERE guid=$page->guid");
+ return true;
+}
+
+$previous_access = elgg_set_ignore_access(true);
+
+$dbprefix = elgg_get_config('dbprefix');
+$name_metastring_id = get_metastring_id('parent_guid');
+
+// Looking for pages without metadata (see #3046)
+$options = array(
+ 'type' => 'object',
+ 'subtype' => 'page',
+ 'wheres' => "NOT EXISTS (
+ SELECT 1 FROM {$dbprefix}metadata md
+ WHERE md.entity_guid = e.guid
+ AND md.name_id = $name_metastring_id)"
+);
+$batch = new ElggBatch('elgg_get_entities_from_metadata', $options, 'pages_2012061800', 100);
+elgg_set_ignore_access($previous_access);
+
+if ($batch->callbackResult) {
+ error_log("Elgg Pages upgrade (2012061800) succeeded");
+} else {
+ error_log("Elgg Pages upgrade (2012061800) failed");
+}