123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- /**
- * Action for adding and editing comments
- *
- * @package Elgg.Core
- * @subpackage Comments
- */
- $entity_guid = (int) get_input('entity_guid', 0, false);
- $comment_guid = (int) get_input('comment_guid', 0, false);
- $comment_text = get_input('generic_comment');
- $is_edit_page = (bool) get_input('is_edit_page', false, false);
- if (empty($comment_text)) {
- register_error(elgg_echo("generic_comment:blank"));
- forward(REFERER);
- }
- if ($comment_guid) {
- // Edit an existing comment
- $comment = get_entity($comment_guid);
- if (!elgg_instanceof($comment, 'object', 'comment')) {
- register_error(elgg_echo("generic_comment:notfound"));
- forward(REFERER);
- }
- if (!$comment->canEdit()) {
- register_error(elgg_echo("actionunauthorized"));
- forward(REFERER);
- }
- $comment->description = $comment_text;
- if ($comment->save()) {
- system_message(elgg_echo('generic_comment:updated'));
- if (elgg_is_xhr()) {
- // @todo move to its own view object/comment/content in 1.x
- echo elgg_view('output/longtext', array(
- 'value' => $comment->description,
- 'class' => 'elgg-inner',
- 'data-role' => 'comment-text',
- ));
- }
- } else {
- register_error(elgg_echo('generic_comment:failure'));
- }
- } else {
- // Create a new comment on the target entity
- $entity = get_entity($entity_guid);
- if (!$entity) {
- register_error(elgg_echo("generic_comment:notfound"));
- forward(REFERER);
- }
- $user = elgg_get_logged_in_user_entity();
- $comment = new ElggComment();
- $comment->description = $comment_text;
- $comment->owner_guid = $user->getGUID();
- $comment->container_guid = $entity->getGUID();
- $comment->access_id = $entity->access_id;
- $guid = $comment->save();
- if (!$guid) {
- register_error(elgg_echo("generic_comment:failure"));
- forward(REFERER);
- }
- // Notify if poster wasn't owner
- if ($entity->owner_guid != $user->guid) {
- $owner = $entity->getOwnerEntity();
- notify_user($owner->guid,
- $user->guid,
- elgg_echo('generic_comment:email:subject', array(), $owner->language),
- elgg_echo('generic_comment:email:body', array(
- $entity->title,
- $user->name,
- $comment_text,
- $comment->getURL(),
- $user->name,
- $user->getURL()
- ), $owner->language),
- array(
- 'object' => $comment,
- 'action' => 'create',
- )
- );
- }
- // Add to river
- elgg_create_river_item(array(
- 'view' => 'river/object/comment/create',
- 'action_type' => 'comment',
- 'subject_guid' => $user->guid,
- 'object_guid' => $guid,
- 'target_guid' => $entity_guid,
- ));
- system_message(elgg_echo('generic_comment:posted'));
- }
- if ($is_edit_page) {
- forward($comment->getURL());
- }
- forward(REFERER);
|