/** * @param int $talkid * @param string $text * Save an answer to the talk */ public function answerTalk($args) { $talkid = $args['talkid']; $text = $args['text']; $users = $this->connect->users(); $messages = $this->connect->messages(); $message = $messages->getByReply($talkid); $talk = $messages->getById($talkid)[0]; $usermessages = $this->connect->userMessage(); //$usermessages = $this->getUserMessages($this->userId); if (!($usermessage = $usermessages->getMessageById($message['id']))) { $usermessages->createStatus($message['id'], $this->userId); $usermessage = $usermessages->getMessageById($message['id']); } if ($message['status'] < 2) { $message['status'] = 2; $messages->setStatus($message['mid'], 2); } $subscribers = explode(',', $talk['subscribers']); if (!in_array($this->userId, $subscribers)) { $subscribers[] = $this->userId; } else { unset($subscribers[array_search($this->userId, $subscribers)]); $talk['subscribers'] = $subscribers; $subscribers[] = $talk['author']; //$subscribers[] = $this->userId; $talk['subscribers'] = $subscribers; } $mailsubscribers = array(); $groupspref = array(); foreach ($subscribers as $s => $subscriber) { if (strstr($subscriber, "-group")) { $group = substr($subscriber, 0, strpos($subscriber, "-group")); if ($group && is_string($group)) { foreach ($users->getUsersFromGroup($group) as $gu => $groupuser) { $user = $users->getUserDetails($groupuser['uid']); $groupusers[$groupuser['uid']] = $user; } $mailsubscribers[$group] = ['groupid' => $group, 'grouppref' => $group . '-group', 'groupusers' => $groupusers]; $groupspref[] = $group . '-group'; } } else { if (!($subscriber == $this->userId)) { $allusers[$subscriber] = $users->getUserDetails($subscriber); } } } $mailsubscribers['ungroupped'] = ['groupusers' => $allusers]; if (count($mailsubscribers) > 0 && count($groupspref) > 0) { $messageSubscribers = implode(',', $groupspref); if (count($mailsubscribers['ungroupped']['groupusers']) > 0) { $messageSubscribers .= ',' . implode(',', array_keys($mailsubscribers['ungroupped']['groupusers'])); } } else { $messageSubscribers = implode(',', array_keys($mailsubscribers['ungroupped']['groupusers'])); } $messagedata = array('rid' => $talkid, 'date' => date("Y-m-d h:i:s"), 'title' => Helper::checkTxt($text), 'text' => '', 'author' => $this->userId, 'subscribers' => $messageSubscribers, 'hash' => isset($talk['hash']) && !empty($talk['hash']) ? $talk['hash'] : md5(date("Y-m-d h:i:s") . '' . $text), 'status' => 0); $messages = $this->connect->messages(); $saved = $messages->save($messagedata); //$saved = 1; if ($saved) { foreach ($subscribers as $s => $subscriber) { if (is_string($subscriber) && !empty($subscriber)) { $usermessagedata = ['uid' => $subscriber, 'mid' => $saved, 'status' => 0]; $usermessages->save($usermessagedata); } } $sent = $this->sendMessage($saved, $mailsubscribers, $this->userId, $messagedata); foreach ($mailsubscribers as $m => $ms) { if ($m == 'ungroupped') { $sent = $this->sendMessage($saved, $ms['groupusers'], $this->userId, $messagedata); } else { $messagedata['groupsid'] = $ms['grouppref']; $sent = $this->sendMessage($saved, $ms['groupusers'], $ms['grouppref'], $messagedata); } } $params = array('answerid' => $saved, 'author' => $this->userId, 'date' => date("Y-m-d h:i:s"), 'title' => Helper::checkTxt($text), 'sent' => $sent, 'appname' => $this->appName); } else { $params = array('title' => Helper::checkTxt($text)); } $view = Helper::renderPartial($this->appName, 'api.addanswer', $params); $params = array('user' => $this->userId, 'view' => $view, 'requesttoken' => !\OC_Util::isCallRegistered() ? '' : \OC_Util::callRegister()); return new DataResponse($params); }
/** * @PublicPage * @NoAdminRequired * @NoCSRFRequired * @return DataResponse */ public function getuserfiles() { $params = array('user' => $this->userId); $fileList = $this->createFileListTree(); $params['file_list'] = $fileList; $params['view'] = Helper::renderPartial($this->appName, 'part.userfilelist', $params); return new DataResponse($params); }