From aa8af5035f0f7b2ed54eb42a136b58565e023c01 Mon Sep 17 00:00:00 2001 From: Sem Date: Sun, 8 Jul 2012 13:23:40 +0200 Subject: Fixes #1708. Moving up subpages when delete a page wasn't be applied in page_top subtype. --- mod/pages/actions/pages/delete.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/mod/pages/actions/pages/delete.php b/mod/pages/actions/pages/delete.php index 7a314a280..fbb4cf551 100644 --- a/mod/pages/actions/pages/delete.php +++ b/mod/pages/actions/pages/delete.php @@ -23,6 +23,23 @@ if (elgg_instanceof($page, 'object', 'page') || elgg_instanceof($page, 'object', if ($children) { foreach ($children as $child) { $child->parent_guid = $parent; + + // If no parent, we need to transform $child in a page_top + if ($parent == 0) { + $dbprefix = elgg_get_config('dbprefix'); + $subtype_id = add_subtype('object', 'page_top'); + update_data("UPDATE {$dbprefix}entities + set subtype='$subtype_id' WHERE guid=$child->guid"); + + // If memcache is available then delete this entry from the cache + static $newentity_cache; + if ((!$newentity_cache) && (is_memcache_available())) { + $newentity_cache = new ElggMemcache('new_entity_cache'); + } + if ($newentity_cache) { + $newentity_cache->delete($guid); + } + } } } -- cgit v1.2.3 From 324f4ed234638c66815fbaf2601373c869d023b2 Mon Sep 17 00:00:00 2001 From: cash Date: Sat, 30 Mar 2013 15:00:53 -0400 Subject: fixed the switch from page to page_top - the parent_guid metadata needed to be deleted --- mod/pages/actions/pages/delete.php | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/mod/pages/actions/pages/delete.php b/mod/pages/actions/pages/delete.php index fbb4cf551..f6b25cd7e 100644 --- a/mod/pages/actions/pages/delete.php +++ b/mod/pages/actions/pages/delete.php @@ -22,22 +22,24 @@ if (elgg_instanceof($page, 'object', 'page') || elgg_instanceof($page, 'object', )); if ($children) { foreach ($children as $child) { - $child->parent_guid = $parent; - - // If no parent, we need to transform $child in a page_top - if ($parent == 0) { - $dbprefix = elgg_get_config('dbprefix'); - $subtype_id = add_subtype('object', 'page_top'); - update_data("UPDATE {$dbprefix}entities - set subtype='$subtype_id' WHERE guid=$child->guid"); - - // If memcache is available then delete this entry from the cache - static $newentity_cache; - if ((!$newentity_cache) && (is_memcache_available())) { + if ($parent) { + $child->parent_guid = $parent; + } else { + // If no parent, we need to transform $child to a page_top + $db_prefix = elgg_get_config('dbprefix'); + $subtype_id = (int)get_subtype_id('object', 'page_top'); + $child_guid = (int)$child->guid; + update_data("UPDATE {$db_prefix}entities + SET subtype = $subtype_id WHERE guid = $child_guid"); + elgg_delete_metadata(array( + 'guid' => $child_guid, + 'metadata_name' => 'parent_guid', + )); + + // If memcache is available, delete this entry from the cache + if (is_memcache_available()) { $newentity_cache = new ElggMemcache('new_entity_cache'); - } - if ($newentity_cache) { - $newentity_cache->delete($guid); + $newentity_cache->delete($child_guid); } } } -- cgit v1.2.3 From d456d462674a72c270a9a1ce4066d5318e25a07a Mon Sep 17 00:00:00 2001 From: Sem Date: Sun, 8 Jul 2012 15:42:39 +0200 Subject: Refs #1708. Restore disappeared subpages, which its parent page was top_page and was deleted. --- mod/pages/start.php | 13 ++++++++++++ mod/pages/upgrades/2012061800.php | 43 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 mod/pages/upgrades/2012061800.php 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 @@ +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"); +} -- cgit v1.2.3 From 4b19f1801d29c6441b0f2aaa08ed834df1a0e056 Mon Sep 17 00:00:00 2001 From: cash Date: Sat, 30 Mar 2013 15:21:51 -0400 Subject: fixed upgrade script - was skipping pages because we were changing the results between calls to ElggBatch --- mod/pages/upgrades/2012061800.php | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/mod/pages/upgrades/2012061800.php b/mod/pages/upgrades/2012061800.php index fe39faea5..c21ccae3b 100644 --- a/mod/pages/upgrades/2012061800.php +++ b/mod/pages/upgrades/2012061800.php @@ -1,21 +1,26 @@ guid); +function pages_2012061800($page) { $dbprefix = elgg_get_config('dbprefix'); - $subtype_id = add_subtype('object', 'page_top'); + $subtype_id = (int)get_subtype_id('object', 'page_top'); + $page_guid = (int)$page->guid; update_data("UPDATE {$dbprefix}entities - set subtype='$subtype_id' WHERE guid=$page->guid"); + SET subtype = $subtype_id WHERE guid = $page_guid"); + error_log("called"); return true; } @@ -23,8 +28,11 @@ $previous_access = elgg_set_ignore_access(true); $dbprefix = elgg_get_config('dbprefix'); $name_metastring_id = get_metastring_id('parent_guid'); +if (!$name_metastring_id) { + return; +} -// Looking for pages without metadata (see #3046) +// Looking for pages without metadata $options = array( 'type' => 'object', 'subtype' => 'page', @@ -33,11 +41,9 @@ $options = array( 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); +$batch = new ElggBatch('elgg_get_entities_from_metadata', $options, 'pages_2012061800', 50, false); elgg_set_ignore_access($previous_access); if ($batch->callbackResult) { error_log("Elgg Pages upgrade (2012061800) succeeded"); -} else { - error_log("Elgg Pages upgrade (2012061800) failed"); } -- cgit v1.2.3 From 6dac3f3be526a0fdc2aea05444ed3fe0d4e7bcf5 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Sat, 13 Apr 2013 09:44:17 -0400 Subject: clear entity cache for the subpages that were promoted to pages --- mod/pages/actions/pages/delete.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mod/pages/actions/pages/delete.php b/mod/pages/actions/pages/delete.php index f6b25cd7e..c99f15fbf 100644 --- a/mod/pages/actions/pages/delete.php +++ b/mod/pages/actions/pages/delete.php @@ -21,30 +21,33 @@ if (elgg_instanceof($page, 'object', 'page') || elgg_instanceof($page, 'object', 'metadata_value' => $page->getGUID() )); if ($children) { + $db_prefix = elgg_get_config('dbprefix'); + $subtype_id = (int)get_subtype_id('object', 'page_top'); + $newentity_cache = is_memcache_available() ? new ElggMemcache('new_entity_cache') : null; + foreach ($children as $child) { if ($parent) { $child->parent_guid = $parent; } else { // If no parent, we need to transform $child to a page_top - $db_prefix = elgg_get_config('dbprefix'); - $subtype_id = (int)get_subtype_id('object', 'page_top'); $child_guid = (int)$child->guid; + update_data("UPDATE {$db_prefix}entities SET subtype = $subtype_id WHERE guid = $child_guid"); + elgg_delete_metadata(array( 'guid' => $child_guid, 'metadata_name' => 'parent_guid', )); - // If memcache is available, delete this entry from the cache - if (is_memcache_available()) { - $newentity_cache = new ElggMemcache('new_entity_cache'); + invalidate_cache_for_entity($child_guid); + if ($newentity_cache) { $newentity_cache->delete($child_guid); } } } } - + if ($page->delete()) { system_message(elgg_echo('pages:delete:success')); if ($parent) { -- cgit v1.2.3