public function savemail()
 {
     //echo "Hello";
     //print_r($_POST);
     $messages = $this->connect->messages();
     $usermessages = $this->connect->userMessage();
     $message = $_POST['message'];
     //$checkMail = new MailParser();
     $checkMail = new ParseMail();
     $message = $checkMail->checkMail($message);
     //file_put_contents('/tmp/inb.log', "\nhash : ".$message['hash']."\n", FILE_APPEND);
     $talk = $messages->getTalkByHash($message['hash']);
     $messageid = $talk['id'];
     //file_put_contents('/tmp/inb.log', "\nmessageid : ".$messageid."\n", FILE_APPEND);
     $author = $this->getUserByExternalEmail($message['author']);
     //file_put_contents('/tmp/inb.log', "\nauthor : ".$author."\n", FILE_APPEND);
     //file_put_contents('/tmp/inb.log', "\nMessageSubscribers : ".$message['subscribers']."\t", FILE_APPEND);
     if (strpos($message['subscribers'], '-group')) {
         // If group conversation
         //file_put_contents('/tmp/inb.log', "\nGroup conversation!\n", FILE_APPEND);
         $groupname = substr($message['subscribers'], 0, strpos($message['subscribers'], '-'));
         //file_put_contents('/tmp/inb.log', "\ngroupname : ".$groupname."\n", FILE_APPEND);
         $subscribers = $this->getCorrectGroupId($groupname) . '-group';
         //file_put_contents('/tmp/inb.log', "\nSubscribers : ".$subscribers."\n", FILE_APPEND);
     } else {
         // If private conversation
         $talksubscribers = explode(',', $talk['subscribers']);
         $talksubscribers[] = $talk['author'];
         if (is_array($message['subscribers'])) {
             $messagesubscribers = array();
             foreach ($message['subscribers'] as $s => $subscriber) {
                 $messagesubscribers[] = $this->getCorrectUserId($subscriber);
             }
             array_merge($messagesubscribers, array_diff($talksubscribers, $messagesubscribers));
             unset($messagesubscribers[array_search($author, $messagesubscribers)]);
             $subscribers = implode(',', $messagesubscribers);
         } else {
             if (is_string($message['subscribers'])) {
                 //file_put_contents('/tmp/inb.log', "\nMessageSubscribers is string!\n", FILE_APPEND);
                 $subscribers = $this->getCorrectUserId($message['subscribers']);
                 //file_put_contents('/tmp/inb.log', "\nuserid : ".$subscribers."\t", FILE_APPEND);
                 if (!in_array($subscribers, $talksubscribers)) {
                     $talksubscribers[] = $subscribers;
                 }
                 unset($talksubscribers[array_search($author, $talksubscribers)]);
                 $subscribers = implode(',', $talksubscribers);
             }
         }
     }
     //file_put_contents('/tmp/inb.log', "\nSubscribers : ".$subscribers."\n", FILE_APPEND);
     $messagedata = array('rid' => $messageid, 'date' => date("Y-m-d h:i:s", strtotime($message['date'])), 'title' => $message['title'], 'text' => Helper::checkTxt($message['text']), 'author' => $author, 'subscribers' => $subscribers, 'hash' => $message['hash'], 'status' => 0);
     if (!($usermessage = $usermessages->getMessageById($messageid))) {
         $usermessages->createStatus($messageid, $author);
         $usermessage = $usermessages->getMessageById($messageid);
     }
     if ($messageid && $author && $message['title'] && $message['subscribers']) {
         $saved = $messages->save($messagedata);
     }
     /* else {
     			$error = "MessageID : ".$messageid."\n".
     				"Author : ".$author."\n".
     				"Title : ".$message['title']."\n".
     				"Subscribers : ".$messagedata['subscribers']."\n";
     		}
     		if ($saved) {
     			file_put_contents('/tmp/inb.log', "Message saved!\n", FILE_APPEND);
     		}
     		else {
     			file_put_contents('/tmp/inb.log', "Message not saved! Database error! \n", FILE_APPEND);
     		} */
     die;
 }
Exemplo n.º 2
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);
 }