Exemplo n.º 1
0
 /**
  * @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);
 }
Exemplo n.º 2
0
 /**
  * @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);
 }