1 | <?php |
||
16 | class OCH extends AbstractBackend implements IBackend { |
||
17 | |||
18 | /** |
||
19 | * @var $userMapper \OCA\Chat\OCH\Db\UserMapper |
||
20 | */ |
||
21 | private $userMapper; |
||
22 | |||
23 | /** |
||
24 | * @var $attachmentMapper \OCA\Chat\OCH\Db\AttachmentMapper |
||
25 | */ |
||
26 | private $attachmentMapper; |
||
27 | |||
28 | /** |
||
29 | * @var $messages \OCA\Chat\OCH\Data\Messages |
||
30 | */ |
||
31 | private $messages; |
||
32 | |||
33 | /** |
||
34 | * @var $startconv \OCA\Chat\OCH\Commands\StartConv |
||
35 | */ |
||
36 | private $startconv; |
||
37 | |||
38 | /** |
||
39 | * @var $join \OCA\Chat\OCH\Commands\Join |
||
40 | */ |
||
41 | private $join; |
||
42 | |||
43 | /** |
||
44 | * @var $app \OCA\Chat\App\Chat |
||
45 | */ |
||
46 | private $app; |
||
47 | |||
48 | public function __construct( |
||
49 | ConfigMapper $configMapper, |
||
50 | IConfig $config, |
||
51 | UserMapper $userMapper, |
||
52 | AttachmentMapper $attachmentMapper, |
||
53 | StartConv $startconv, |
||
54 | Messages $messages, |
||
55 | Join $join, |
||
56 | Chat $app |
||
57 | ){ |
||
58 | parent::__construct($configMapper, $config); |
||
59 | $this->userMapper = $userMapper; |
||
60 | $this->attachmentMapper = $attachmentMapper; |
||
61 | $this->startconv = $startconv; |
||
62 | $this->messages = $messages; |
||
63 | $this->join = $join; |
||
64 | $this->app = $app; |
||
65 | } |
||
66 | |||
67 | public function getId(){ |
||
70 | |||
71 | public function getInitConvs(){ |
||
72 | if(count(self::$initConvs) === 0){ |
||
73 | $this->createInitConvs(); |
||
74 | } |
||
75 | return self::$initConvs; |
||
76 | } |
||
77 | |||
78 | private function createInitConvs(){ |
||
79 | $initConvs = array(); |
||
80 | $convs = $this->userMapper->findByUser($this->app->getUserId()); |
||
81 | $usersAllreadyInConv = array(); |
||
82 | foreach($convs as $conv){ |
||
83 | $users = $this->userMapper->findUsersInConv($conv->getConversationId()); |
||
84 | // Find the correct contact for the correct user |
||
85 | $this->messages->setRequestData(array( |
||
86 | "conv_id" => $conv->getConversationId(), |
||
87 | 'user' => $this->app->getCurrentUser(), |
||
88 | "limit" => array(0,30) |
||
89 | )); |
||
90 | $messages = $this->messages->execute(); |
||
91 | $messages = $messages['messages']; |
||
92 | |||
93 | $files = $this->attachmentMapper->findRawByConv($conv->getConversationId()); |
||
94 | $initConvs[$conv->getConversationId()] = array( |
||
95 | "id" => $conv->getConversationId(), |
||
96 | "users"=> $users, |
||
97 | "backend" => "och", |
||
98 | "messages" => $messages, |
||
99 | "files" => $files |
||
100 | ); |
||
101 | if(count($users) === 2){ |
||
102 | foreach($users as $user){ |
||
103 | if($user !== \OCP\User::getUser()){ |
||
104 | $usersAllreadyInConv[] = $user; |
||
105 | } |
||
106 | } |
||
107 | } |
||
108 | |||
109 | $this->join->setRequestData(array( |
||
110 | "conv_id" => $conv->getConversationId(), |
||
111 | "user" => $this->app->getCurrentUser(), |
||
112 | )); |
||
113 | $this->join->execute(); |
||
114 | } |
||
115 | |||
116 | $allUsers = \OCP\User::getUsers(); |
||
117 | $users = array_diff($allUsers, $usersAllreadyInConv); |
||
118 | |||
119 | foreach($users as $user){ |
||
120 | if($user !== \OCP\User::getUser()){ |
||
121 | $this->startconv->setRequestData(array( |
||
122 | "user" => $this->app->getCurrentUser(), |
||
123 | "user_to_invite" => array( |
||
124 | $this->app->getUserasContact($user), |
||
125 | ) |
||
126 | )); |
||
127 | $info = $this->startconv->execute(); |
||
128 | $initConvs[$info['conv_id']] = array( |
||
129 | "id" => $info['conv_id'], |
||
130 | "users"=> array( |
||
131 | \OCP\User::getUser(), |
||
132 | $user |
||
133 | ), |
||
134 | "backend" => "och", |
||
135 | "messages" => array() |
||
136 | ); |
||
137 | |||
138 | } |
||
139 | } |
||
140 | self::$initConvs = $initConvs; |
||
141 | } |
||
142 | |||
143 | public function getDisplayName(){ |
||
146 | |||
147 | public function getProtocols(){ |
||
150 | |||
151 | |||
152 | public function getDefaultConfig(){ |
||
156 | |||
157 | public function getHelp(){ |
||
160 | } |
||
161 |