diff options
Diffstat (limited to 'mod/tasks/upgrades/2012100501.php')
-rw-r--r-- | mod/tasks/upgrades/2012100501.php | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/mod/tasks/upgrades/2012100501.php b/mod/tasks/upgrades/2012100501.php new file mode 100644 index 000000000..6640b90d4 --- /dev/null +++ b/mod/tasks/upgrades/2012100501.php @@ -0,0 +1,79 @@ +<?php +/** + * Move text of first annotation to group forum topic object and delete annotation + * + * First determine if the upgrade is needed and then if needed, batch the update + */ + +$tasks = elgg_get_entities(array( + 'type' => 'object', + 'subtype' => 'tasks', + 'limit' => 1, +)); + +// if not topics, no upgrade required +if (empty($tasks)) { + return; +} + +function tasks_2012100501($task) { + require_once(elgg_get_plugins_path() . 'upgrade-tools/lib/upgrade_tools.php'); + if ($task->long_description) { + $task->description = $task->long_description; + $task->deleteMetadata('long_description'); + $task->save(); + } + if ($task->parent_guid) { + $task->list_guid = $task->parent_guid; + $task->deleteMetadata('parent_guid'); + } + else { + $task->list_guid = 0; + } + /* Active was set as default, so it is not indicative of which tasks are + really active */ + $task->deleteMetadata('active'); + + if ($task->done) { + $task->status = 'done'; + $task->deleteMetadata('done'); + } else { + $task->status = 'new'; + } + // reset priority since old system was a mess + $task->priority = 2; + upgrade_change_subtype($task, 'task'); + + // update river + $options = array('object_guid' => $task->guid); + $items = elgg_get_river($options); + foreach($items as $item) { + if ($item->action_type == 'create') { + upgrade_update_river($item->id, 'river/object/task/create', $task->guid, 0); + } + elseif(in_array($item->action_type, array('done', 'undone', 'subscribe', 'unsubscribe'))) { + elgg_delete_river(array('id' => $item->id)); + } + } + + return true; +} + + +/* + * Run upgrade. First topics, then replies. + */ +$previous_access = elgg_set_ignore_access(true); +$options = array( + 'type' => 'object', + 'subtype' => 'tasks', + 'limit' => 0, +); +$batch = new ElggBatch('elgg_get_entities', $options, "tasks_2012100501", 100, false); +elgg_set_ignore_access($previous_access); + +if ($batch->callbackResult) { + error_log("Elgg Tasks upgrade (2012100501) succeeded"); +} else { + error_log("Elgg Tasks upgrade (2012100501) failed"); +} |