Mysidia Adoptables Support Forum

Mysidia Adoptables Support Forum (http://www.mysidiaadoptables.com/forum/index.php)
-   Questions and Supports (http://www.mysidiaadoptables.com/forum/forumdisplay.php?f=18)
-   -   PM Outbox Errors (http://www.mysidiaadoptables.com/forum/showthread.php?t=5072)

Abronsyth 03-12-2016 11:27 AM

PM Outbox Errors
 
One of my users reported encountering the following error;
"So, I sent a message and ticked the box to save a copy in my outbox. I did this so I could find it later and reply to my own message in the case that the recipient would not reply (so I could update them on the situation without filling out the subject field again). When I went to my message in my outbox, it gave me this error:

Fatal error: Uncaught exception 'MessageNotfoundException' in /home/arieng/catisserie.net/classes/class_privatemessage.php:28 Stack trace: #0 /home/arieng/catisserie.net/view/messagesview.php(77): PrivateMessage->__construct('148') #1 /home/arieng/catisserie.net/classes/class_frontcontroller.php(100): MessagesView->newpm() #2 /home/arieng/catisserie.net/index.php(74): FrontController->render() #3 /home/arieng/catisserie.net/index.php(78): IndexController::main() #4 {main} thrown in /home/arieng/catisserie.net/classes/class_privatemessage.php on line 28

It happens on a couple other messages in my outbox as well, but not all."

Here is class_privatemessage.php:
PHP Code:

<?php

class PrivateMessage extends Model implements Message{

    public 
$mid
    public 
$fromuser;
    public 
$touser;
    public 
$folder "inbox";
    public 
$status;
    public 
$datesent;
    public 
$messagetitle;
    public 
$messagetext;
    public 
$postbar;

    public function 
__construct($mid 0$folder "inbox"$notifier FALSE){     
        
$mysidia Registry::get("mysidia");      
        if(
$mid == 0){
            
//This is a new private message not yet exist in database
            
$this->mid $mid;
            
$this->fromuser $mysidia->user->username;
            
$this->folder = ($folder == "inbox")?$this->folder:$folder;
        }
        else{
            
// The private message is not being composed, so fetch the information from database
            
switch($folder){
                case 
"inbox":
                
$row $mysidia->db->select("messages", array(), "id ='{$mid}'")->fetchObject();
                if(!
is_object($row)) throw new MessageNotfoundException;
                
$this->mid $row->id;           
                break;
                default:
                
$row $mysidia->db->select("folders_messages", array(), "mid ='{$mid}'")->fetchObject();
                if(!
is_object($row)) throw new MessageNotfoundException;
                
$this->mid $row->mid;
            }                
        
            foreach(
$row as $key => $val){
                
// For field usergroup, instantiate a Usergroup Object
                
$idarray = array("id""mid");
                if(!
in_array($key$idarray)) $this->$key $val;
                if(
$notifier == TRUE$this->getnotifier();            
            }
        }
    }
  
    public function 
gettitle(){
        if(!empty(
$this->messagetitle)) return $this->messagetitle;
        else return 
FALSE;
    }
  
    public function 
getcontent(){
        if(!empty(
$this->messagetext)) return $this->messagetext;
        else return 
FALSE;
    }

    public function 
getnotifier(){
        if(
is_object($this->notifier)) throw new MessageException("A PM Notifier already exists...");
        else 
$this->notifier = new PmNotifier;
    }

    public function 
getEditor(){
        
$mysidia Registry::get("mysidia");
        if (
defined("SUBDIR") and SUBDIR == "AdminCP") include_once("../inc/ckeditor/ckeditor.php"); 
        else include_once (
"inc/ckeditor/ckeditor.php"); 
        
$editor = new CKEditor;
        
$editor->basePath "{$mysidia->path->getAbsolute()}/inc/ckeditor/";
        return 
$editor;    
    }
  
    public function 
getPostbar(){
        if(
$this->mid == 0) return FALSE;
        
$sender = new Member($this->fromuser);
        
$sender->getprofile();
        
$this->postbar = new Table("postbar""100%"FALSE);
        
$postHeader = new TRow;
        
$postHeader->add(new TCell(new Image($sender->profile->getAvatar())));
        
$postHeader->add(new TCell("<b>Member Since: </b><br>{$sender->membersince}<br> <b>Bio:</b><br>{$sender->profile->getBio()}<br> "));
        
$postHeader->add(new TCell("<b>Nickname:</b> {$sender->profile->getNickname()}<br><b>Pronoun:</b> {$sender->profile->getGender()}<br><b>Cash:</b> <a href='../../donate'>{$sender->money}</a><br>"));
        
$this->postbar->add($postHeader); 
        return 
$this->postbar;              
    }
  
    public function 
setsender($username){
        
$this->fromuser $username;
    }
  
    public function 
setrecipient($username){
        
$this->touser $username;
    }

    public function 
setmessage($title$text){
        if(empty(
$title) or empty($text)) throw new Exception("Cannot set an empty private message");
        else{
            
$this->messagetitle $title;
            
$this->messagetext $text;
        }
    }
  
    public function 
getMessage(){
        if(
$this->mid == 0) return FALSE;
        else{
            
// We are reading this PM now!        
            
$mysidia Registry::get("mysidia");
            
$pmformat "<table width='100%' border='4' cellpadding='3' cellspacing='0' bordercolor='1'>
                         <td><table width='100%' border='3' cellpadding='3' cellspacing='0' bordercolor='1'>
                         <tr><td width='100%' class='tr><strong>Date Received: 
{$this->datesent}</strong></td>
                         </tr></table>
                         <table width='100%' border='2' cellpadding='3' cellspacing='0' bordercolor='1'>
                         <tr><td class='trow'><center><a href='../../profile/view/
{$this->fromuser}' target='_blank'>{$this->fromuser}</a> sent you this PM.</center><br />{$this->getPostbar()->render()}</td></tr>
                         <tr><td class='trow'><center><strong>
{$this->messagetitle}<br />_______________________________</strong></center><br /><strong><center>{$this->format($this->messagetext)}</strong></center></td>
                         </tr></table>
                         <table width='100%' border='1' cellpadding='3' cellspacing='0' bordercolor='1'>
                         <tr><td width='100%' colspan='2' class='tr'><strong><b><a href='../../messages'><img src='
{$mysidia->path->getAbsolute()}templates/icons/next.gif' border=0> Return to Inbox</a> | <a href='../../messages/newpm/{$this->mid}'><img src='{$mysidia->path->getAbsolute()}templates/icons/comment.gif' border=0> Reply to this Message</a> | <a href='../../messages/report/{$this->mid}'><img src='{$mysidia->path->getAbsolute()}templates/icons/next.gif' border=0> Report this member</a></b></strong></td>
                         </tr></table>
                         </td></table><br />"
;
            
$message = new Division("message");
            
$message->add(new Comment($pmformat));             
            return 
$message;         
        }
    }
  
    public function 
setRead($status){
        
$mysidia Registry::get("mysidia");
        
$mysidia->db->update("messages", array("status" => 'read'), "id='{$this->mid}'");
    }
  
    public function 
post($user ""){
        
$mysidia Registry::get("mysidia");
        
$date = new DateTime;
        if(!
$this->messagetitle$this->messagetitle $mysidia->input->post("mtitle");
        if(!
$this->messagetext$this->messagetext $this->format($mysidia->input->post("mtext")); 
        
$mysidia->db->insert("messages", array("id" => NULL"fromuser" => $this->fromuser"touser" => $this->touser"status" => "unread""datesent" => $date->format("Y-m-d"), "messagetitle" => $this->messagetitle"messagetext" => $this->messagetext));     
      
        if(
$mysidia->input->post("outbox") == "yes"){
            
$mysidia->db->insert("folders_messages", array("mid" => NULL"fromuser" => $mysidia->user->username"touser" => $mysidia->input->post("recipient"), "folder" => "outbox""datesent" => $date->format("Y-m-d"), "messagetitle" => $mysidia->input->post("mtitle"), "messagetext" => $this->format($mysidia->input->post("mtext"))));
        }
        if(
is_numeric($mysidia->input->post("draftid"))){
            
$mysidia->db->delete("folders_messages""mid='{$mysidia->input->post("draftid")}' and fromuser='{$mysidia->user->username}'");
        } 
        return 
TRUE;
    }
  
    public function 
postDraft($user ""){
        
$mysidia Registry::get("mysidia");
        
$date = new DateTime;
        if(!
$this->messagetitle$this->messagetitle $mysidia->input->post("mtitle");
        if(!
$this->messagetext$this->messagetext $this->format($mysidia->input->post("mtext")); 
        
$mysidia->db->insert("folders_messages", array("mid" => NULL"fromuser" => $mysidia->user->username"touser" => $mysidia->input->post("recipient"), "folder" => $this->folder"datesent" => $date->format("Y-m-d"), "messagetitle" => $mysidia->input->post("mtitle"), "messagetext" => $this->format($mysidia->input->post("mtext"))));     
        return 
TRUE;
    }
  
    public function 
editDraft($user ""){
        
$mysidia Registry::get("mysidia");
        
$date = new DateTime;
        if(!
$this->messagetitle$this->messagetitle $mysidia->input->post("mtitle");
        if(!
$this->messagetext$this->messagetext $this->format($mysidia->input->post("mtext")); 
        
$mysidia->db->update("folders_messages", array("fromuser" => $this->fromuser"touser" => $this->touser"folder" => "draft""datesent" => $date->format("Y-m-d"), "messagetitle" => $this->messagetitle"messagetext" => $this->messagetext), "fromuser='{$mysidia->user->username}' and mid='{$mysidia->input->post("id")}'");
        return 
TRUE;
    }
  
    public function 
remove(){
        
$mysidia Registry::get("mysidia");
        if(
$this->mid == 0) return FALSE;
        if(
$this->folder == "inbox"$mysidia->db->delete("messages""touser='{$mysidia->user->username}' and id='{$this->mid}'");
        else 
$mysidia->db->delete("folders_messages""fromuser='{$mysidia->user->username}' and mid='{$this->mid}' and folder='{$this->folder}'");
        return 
TRUE;
    }
  
    public function 
report(){
        
$mysidia Registry::get("mysidia");
        
$date = new DateTime;     
        
$this->messagetitle "<b>⚠️</b> ".$mysidia->input->post("reason");
        
$this->messagetext "<b>Offender:</b> ".$mysidia->input->post("mfrom")."<br><b>Reason For Report:</b> ".$mysidia->input->post("reason")."<br><b>Message Being Reported:</b><br><blockquote><b><i>\"".$mysidia->input->post("mtitle")."\"</i></b><br>".$this->messagetext."</blockquote>";
        
$mysidia->db->insert("messages", array("id" => NULL"fromuser" => $mysidia->user->username"touser" => $mysidia->input->post("recipient"), "status" => "unread""datesent" => $date->format("M d, Y \a\t h:i A"), "messagetitle" => $this->messagetitle"messagetext" => $this->messagetext));     
        return 
TRUE;     
    }

    public function 
format($text){
        
$text html_entity_decode($text);
        
$text stripslashes($text);
        
$text str_replace("rn","",$text);
        
$text str_replace("&nbsp;","",$text);
        return 
$text;
    }
  
    protected function 
save($field$value){
        
$mysidia Registry::get("mysidia");
        
$mysidia->db->update("messages", array($field => $value), "id='{$this->mid}'");
    }  
}
?>

Can anyone spot where the error is? I have made changes to the private messages before, so I'm thinking the error is resulting from those changes.

Kyttias 03-12-2016 05:30 PM

Check to see if a message with that message id exists in the database. See, my concern here is that copies aren't copies, merely references to the original message - which the owner can delete at any time, which would delete it for both parties. But not the reference. The reference is still there, trying to find something that's been deleted, hence an error. That's my best guess. :eye: You can probably recreate the error.

Storyteller 08-06-2016 02:29 AM

I'm wondering, would it be possible to somehow make a link under Messages in the sidebar that alerts a user that they have a PM on the myBB forum?


All times are GMT -5. The time now is 03:29 PM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.