/
subscribe.php
54 lines (47 loc) · 1.68 KB
/
subscribe.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
namespace Concrete\Controller\Dialog\Conversation;
use Concrete\Core\Application\EditResponse;
use Concrete\Core\Controller\Controller;
use Concrete\Core\User\User;
class Subscribe extends Controller
{
protected $controllerActionPath = '/ccm/system/dialogs/conversation/subscribe';
protected function loadConversation($cnvID)
{
$conversation = \Conversation::getByID($cnvID);
if (is_object($conversation) && $conversation->getConversationSubscriptionEnabled()) {
$cp = new \Permissions($conversation);
if ($cp->canViewConversation()) {
$u = $this->app->make(User::class);
$this->user = $u;
$this->conversation = $conversation;
$this->set('conversation', $conversation);
$this->set('isSubscribed', $conversation->isUserSubscribed($u));
$this->setViewObject(new \View('/dialogs/conversation/subscribe'));
}
}
if (!$conversation) {
throw new \Exception(t('Access Denied.'));
}
}
public function view($cnvID)
{
$this->loadConversation($cnvID);
}
public function subscribe($cnvID)
{
$this->loadConversation($cnvID);
$this->conversation->subscribeUser($this->user);
$o = new EditResponse();
$o->setAdditionalDataAttribute('subscribed', true);
$o->outputJSON();
}
public function unsubscribe($cnvID)
{
$this->loadConversation($cnvID);
$this->conversation->unsubscribeUser($this->user);
$o = new EditResponse();
$o->setAdditionalDataAttribute('subscribed', false);
$o->outputJSON();
}
}