diff options
author | Sem <sembrestels@riseup.net> | 2012-07-08 15:42:39 +0200 |
---|---|---|
committer | cash <cash.costello@gmail.com> | 2013-03-30 15:06:27 -0400 |
commit | d456d462674a72c270a9a1ce4066d5318e25a07a (patch) | |
tree | 5f0e41392cf8e7f68159bb8be4437c639b51d272 | |
parent | 324f4ed234638c66815fbaf2601373c869d023b2 (diff) | |
download | elgg-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.php | 13 | ||||
-rw-r--r-- | mod/pages/upgrades/2012061800.php | 43 |
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"); +} |