From 228d3697bcd0218605be2e28131574cc85293a2e Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Mon, 17 Mar 2014 12:00:58 -0300 Subject: Squashed 'mod/tasks/' content from commit c9b1097 git-subtree-dir: mod/tasks git-subtree-split: c9b1097ce081d6893f9c939146208559c089dc15 --- actions/tasks/comments/add.php | 169 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 actions/tasks/comments/add.php (limited to 'actions/tasks/comments') diff --git a/actions/tasks/comments/add.php b/actions/tasks/comments/add.php new file mode 100644 index 000000000..6221eccbd --- /dev/null +++ b/actions/tasks/comments/add.php @@ -0,0 +1,169 @@ +guid, + 'generic_comment', + $comment_text, + "", + $user->guid, + $entity->access_id); + + // tell user annotation posted + if (!$annotation) { + register_error(elgg_echo("generic_comment:failure")); + forward(REFERER); + } +} +switch ($state_action) { + case 'assign': + add_entity_relationship(elgg_get_logged_in_user_guid(), 'subscribes', $entity_guid); + break; + case 'activate': + add_entity_relationship(elgg_get_logged_in_user_guid(), 'is_doing', $entity_guid); + break; + case 'assign_and_activate': + add_entity_relationship(elgg_get_logged_in_user_guid(), 'subscribes', $entity_guid); + add_entity_relationship(elgg_get_logged_in_user_guid(), 'is_doing', $entity_guid); + break; + case 'deactivate': + remove_entity_relationship(elgg_get_logged_in_user_guid(), 'is_doing', $entity_guid); + break; + case 'leave': + remove_entity_relationship(elgg_get_logged_in_user_guid(), 'is_doing', $entity_guid); + remove_entity_relationship(elgg_get_logged_in_user_guid(), 'subscribes', $entity_guid); + break; + case 'reopen': + remove_entity_relationships($entity_guid, 'is_doing', true); + remove_entity_relationships($entity_guid, 'subscribes', true); + break; +} + +if (in_array($state_action, array('activate', 'assign_and_activate'))) { + if($active_task = tasks_get_user_active_task($user->guid)) { + $active_task->status = 'assigned'; + + create_annotation($active_task->guid, + 'task_state_changed', + 'assigned', + "", + $user->guid, + $active_task->access_id); + } +} + +$new_state = tasks_get_state_from_action($state_action); + +if ($state_action == 'leave') { + $have_participants_yet = elgg_get_entities_from_relationship(array( + 'relationship' => 'subscribes', + 'relationship_guid' => $entity->guid, + 'inverse_relationship' => true, + 'count' => true, + )); + if ($have_participants_yet) { + $new_state = $entity->status; + } +} + +if ($state_action == 'deactivate') { + $have_participants_yet = elgg_get_entities_from_relationship(array( + 'relationship' => 'is_doing', + 'relationship_guid' => $entity->guid, + 'inverse_relationship' => true, + 'count' => true, + )); + if ($have_participants_yet) { + $new_state = $entity->status; + } +} + +if ($state_action == 'assign' && $entity->status == 'active') { + $new_state = $entity->status; +} + +if($new_state) { + $entity->status = $new_state; + create_annotation($entity->guid, + 'task_state_changed', + $state_action, + "", + $user->guid, + $entity->access_id); +} + +// notify if poster wasn't owner +if ($entity->owner_guid != $user->guid) { + + if($new_state) { + notify_user($entity->owner_guid, + $user->guid, + elgg_echo('tasks:email:subject'), + elgg_echo('tasks:email:body', array( + $user->name, + $entity->title, + $new_state, + $comment_text, + $entity->getURL(), + $user->name, + $user->getURL() + )) + ); + } else { + notify_user($entity->owner_guid, + $user->guid, + elgg_echo('generic_comment:email:subject'), + elgg_echo('generic_comment:email:body', array( + $entity->title, + $user->name, + $comment_text, + $entity->getURL(), + $user->name, + $user->getURL() + )) + ); + } +} + +if ($new_state) { + system_message(elgg_echo("tasks:status:changed")); + $action = $state_action; +} else { + system_message(elgg_echo("generic_comment:posted")); + $action = 'comment'; +} + +//add to river +if (!in_array($state_action, array('activate', 'deactivate'))) { + $river = 'river/annotation/generic_comment/create'; + add_to_river($river, $action, $user->guid, $entity->guid, "", 0, $annotation); +} + +if ($new_state) { + echo "{\"new_state\": \"$new_state\"}"; +} + +// Forward to the page the action occurred on +forward(REFERER); -- cgit v1.2.3