示例#1
0
 /**
  * Delete a message
  */
 public function delete()
 {
     $my = JXFactory::getUser();
     $message_id = JRequest::getVar('message_id');
     $stream = JTable::getInstance('Stream', 'StreamTable');
     $stream->load($message_id);
     if (!$my->authorise('stream.message.delete', $stream)) {
         // No reason this code would ever get here!
         exit;
     }
     // Remove trending tags data
     $tagsTrend = new StreamTag();
     $rawData = json_decode($stream->raw);
     $rawData->tags = isset($rawData->tags) ? $rawData->tags : '';
     $tagsArray = explode(',', trim($rawData->tags, ','));
     foreach ($tagsArray as $tag) {
         // trim hashes
         $tag = trim($tag, '#');
         // remove trending data
         $tagsTrend->updateTrending($tag, $stream->group_id, false);
     }
     $stream->delete();
     // Delete related comments
     StreamComment::deleteComments($message_id);
     // Unattach all files
     $user = JXFactory::getUser($stream->user_id);
     $links = StreamMessage::getLinks($stream->message);
     if (!empty($links)) {
         $userLinks = $user->getParam('links');
         foreach ($links as $row) {
             $link = JTable::getInstance('Link', 'StreamTable');
             $link->load(array('link' => $row));
             $link->removeUser($user->id);
             $link->store();
             $userLinks = JXUtility::csvRemove($userLinks, $link->id);
         }
         $user->setParam('links', $userLinks);
         $user->save();
     }
     // @todo: delete attachments
     // Upgrade group stats if necessary
     if (JRequest::getVar('group_id')) {
         $group = JTable::getInstance('Group', 'StreamTable');
         $group->load(JRequest::getVar('group_id'));
         $group->setParam('message_count', $streamModel->countStream(array('group_id' => $group->id)));
         $group->setParam($stream->type . '_count', $streamModel->countStream(array('group_id' => $group->id, 'type' => $stream->type)));
         $group->store();
     }
     $data = array();
     $data['id'] = $message_id;
     header('Content-Type: text/json');
     echo json_encode($data);
     exit;
 }