aboutsummaryrefslogtreecommitdiff
path: root/mod/tasks/upgrades/2012100501.php
diff options
context:
space:
mode:
Diffstat (limited to 'mod/tasks/upgrades/2012100501.php')
-rw-r--r--mod/tasks/upgrades/2012100501.php79
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");
+}