]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Refs #1708. Restore disappeared subpages, which its parent page was top_page and...
authorSem <sembrestels@riseup.net>
Sun, 8 Jul 2012 13:42:39 +0000 (15:42 +0200)
committercash <cash.costello@gmail.com>
Sat, 30 Mar 2013 19:06:27 +0000 (15:06 -0400)
mod/pages/start.php
mod/pages/upgrades/2012061800.php [new file with mode: 0644]

index 8debeef24e203af9ef12ae6301d948b660e2480f..c1183c9bfcd6412e8dcab3644075113fc1c3e28a 100644 (file)
@@ -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 (file)
index 0000000..fe39fae
--- /dev/null
@@ -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");
+}