public function showAction()
 {
     $this->logger->entering();
     $this->logger->info('Loading conversation');
     $conversations = new Conversation();
     $conversation = $conversations->find($this->_getParam('id'))->current();
     $this->logger->info('Loading Item');
     $item = $conversation->findParentItem();
     $this->logger->info('Ensure authorized to view');
     if ($this->session->user_id != $conversation->user_id && $this->session->user_id != $item->owner_id) {
         $this->flash->notice = "Invalid Action";
         $this->_redirect('/');
     }
     $this->logger->info('Loading Messages');
     $messageRows = $conversation->findMessage();
     foreach ($messageRows as $messageRow) {
         $message = $messageRow->toArray();
         $message['user'] = $messageRow->findParentUser()->toArray();
         $messages[] = $message;
     }
     $this->logger->info('Loading View');
     $this->view->assign(array('conversation' => $conversation, 'messages' => $messages, 'item' => $item));
     $this->logger->info('Rendering view');
     $this->render();
     $this->logger->exiting();
 }
Ejemplo n.º 2
0
 public function bug($id, $request)
 {
     $ticket = Ticket::find($id);
     $message = "Après étude de votre problème, il en résulte qu'il ne s'agit pas d'un incident isolé mais bien d'un problème technique interne à DreamVids (bug). Nous travaillons actuellement à la détection et à la résolution de ce bug mais nous ne pouvons vous donner de plus amples informations. Nous nous excusons pour la gêne occasionnée et vous remerçions de votre patience.";
     $this->mail($ticket, $message);
     if ($ticket->conv_id != '' && Conversation::exists($ticket->conv_id)) {
         Conversation::find($ticket->conv_id)->removeChannel(User::find(User::getIdByName($ticket->tech))->getMainChannel());
     }
     $ticket->delete();
     return new RedirectResponse(WEBROOT . 'admin/tickets');
 }
Ejemplo n.º 3
0
 public static function sendNew($sender, $conversation, $content, $timeOffset = 0)
 {
     $id = Message::generateId(6);
     $timestamp = Utils::tps() + $timeOffset;
     $message = Message::create(array('id' => $id, 'sender_id' => $sender, 'conversation_id' => $conversation, 'content' => $content, 'timestamp' => $timestamp));
     $recep = array();
     $members = explode(';', trim(Conversation::find($conversation)->members_ids, ';'));
     foreach ($members as $id) {
         if ($id != $sender) {
             $recep[] = trim(UserChannel::find($id)->admins_ids, ';');
         }
     }
     $recep = ';' . implode(';', $recep) . ';';
     $recep = ChannelAction::filterReceiver($recep, "pm");
     ChannelAction::create(array('id' => ChannelAction::generateId(6), 'channel_id' => userChannel::find($sender)->id, 'recipients_ids' => $recep, 'type' => 'pm', 'target' => $conversation, 'timestamp' => $timestamp));
     return $message;
 }
Ejemplo n.º 4
0
 public function show($id)
 {
     if (FEUsersHelper::isLogged()) {
         $conversation = Conversation::find($id);
         if ($conversation) {
             if (FEUsersHelper::isCurrentUser($conversation->user1_id) || FEUsersHelper::isCurrentUser($conversation->user2_id)) {
                 return View::make('frontend/messages/show')->with('user', User::find(Session::get('user')['id']))->with('conversations', $this->conversations)->with('conversation', $conversation);
             } else {
                 return Redirect::to('message');
             }
         } else {
             return Redirect::to('message');
         }
     } else {
         return Redirect::to('/');
     }
 }
Ejemplo n.º 5
0
 public static function beforeSchemaUpdate()
 {
     $table = strtolower(get_called_class());
     $schema = Schema::get();
     $schemadef = $schema->getTableDef($table);
     // 2016-01-06 We have to make sure there is no conversation with id==0 since it will screw up auto increment resequencing
     if ($schemadef['fields']['id']['auto_increment']) {
         // since we already have auto incrementing ('serial') we can continue
         return;
     }
     // The conversation will be recreated in upgrade.php, which will
     // generate a new URI, but that's collateral damage for you.
     $conv = new Conversation();
     $conv->id = 0;
     if ($conv->find()) {
         while ($conv->fetch()) {
             // Since we have filtered on 0 this only deletes such entries
             // which I have been afraid wouldn't work, but apparently does!
             // (I thought it would act as null or something and find _all_ conversation entries)
             $conv->delete();
         }
     }
 }
Ejemplo n.º 6
0
 public function create($request)
 {
     if (Session::isActive()) {
         $req = $request->getParameters();
         Session::get()->last_visit = Utils::tps();
         Session::get()->save();
         if (isset($req['sender'], $req['conversation'], $req['content']) && !empty($req['conversation']) && !empty($req['sender']) && !empty($req['content'])) {
             $sender = Utils::secure($req['sender']);
             $conversation = Utils::secure($req['conversation']);
             $content = Utils::secure($req['content']);
             $channel = UserChannel::exists($sender) ? UserChannel::find($sender) : false;
             if ($channel && $channel->belongToUser(Session::get()->id) && ($conv = Conversation::find($conversation))) {
                 if (!$conv->containsChannel($channel)) {
                     return Utils::getUnauthorizedResponse();
                 }
                 $message = Message::sendNew($sender, $conversation, $content);
                 $messageData = array('id' => $message->id, 'avatar' => $channel->getAvatar(), 'pseudo' => $channel->name, 'text' => $content, 'mine' => 'true');
                 return new JsonResponse($messageData);
             }
         }
     }
     return new Response(500);
 }
Ejemplo n.º 7
0
 public static function getUrlFromNotice(Notice $notice, $anchor = true)
 {
     $conv = new Conversation();
     $conv->id = $notice->conversation;
     $conv->find(true);
     if (!$conv instanceof Conversation) {
         common_debug('Conversation does not exist for notice ID: ' . $notice->id);
         throw new NoResultException($conv);
     }
     return $conv->getUrl($anchor ? $notice->id : null);
 }
Ejemplo n.º 8
0
 public function destroy($id, $request)
 {
     $req = $request->getParameters();
     if (Session::isActive() && isset($req['channelId']) && ($channel = UserChannel::find($req['channelId']))) {
         $conv = Conversation::exists($id) ? Conversation::find($id) : false;
         if ($conv && $conv->containsChannel($channel)) {
             $conv->removeChannel($channel);
             return new Response(200);
         }
     }
     return new Response(500);
 }
Ejemplo n.º 9
0
function fixupConversationURIs()
{
    printfnq("Ensuring all conversations have a URI...");
    $conv = new Conversation();
    $conv->whereAdd('uri IS NULL');
    if ($conv->find()) {
        $rounds = 0;
        while ($conv->fetch()) {
            $uri = common_local_url('conversation', array('id' => $conv->id));
            $sql = sprintf('UPDATE conversation SET uri="%1$s" WHERE id="%2$d";', $conv->escape($uri), $conv->id);
            $conv->query($sql);
            if (($conv->N - ++$rounds) % 500 == 0) {
                printfnq(sprintf(' %d items left...', $conv->N - $rounds));
            }
        }
    }
    printfnq("DONE.\n");
}