Hi, i'm trying to develop provate message module. This is my class that extends Page_Controller
<?php
class PrivateMessage extends Page_Controller {
public $URLSegment = "PrivateMessage";
function __construct() {
return parent::__construct(null);
}
function init() {
if(!Member::currentUserID()) Security::permissionFailure();
parent::init();
}
function InboxItems() {
$myID=Member::currentUserID();
return DataObject::get("PrivateMessage", "ToID = $myID AND (Status = 'Unread' OR Status ='Read')", "Status, Created DESC");
}
function SentItems() {
$myID=Member::currentUserID();
return DataObject::get("PrivateMessage", "FromID = $myID AND Status = 'Sent'", "Created DESC");
}
function DraftItems() {
$myID=Member::currentUserID();
return DataObject::get("PrivateMessage", "ToID = $myID AND Status = 'Draft'", "Created DESC");
}
function GetNewMessages() {
$myID=Member::currentUserID();
return DataObject::get("PrivateMessage", "ToID = $myID AND Status = 'Unread'", "Created DESC");
}
function PostMessageForm() {
$members = DataObject::get("Member", "", "Firstname, Surname","INNER JOIN Group_Members ON Group_Members.GroupID IN (1,2,3) AND Group_Members.MemberID = Member.ID");
$allMembers = array();
foreach($members as $member) {
$allMembers[$member->ID] = "$member->Nickname";
}
$me = Member::currentUser();
return new Form($this, "PostMessageForm", new FieldSet(
new ReadonlyField("From", "Od", "$me->NickName"),
new DropdownField("ToID", "Do", $allMembers),
new TextField("Subject", "Temat"),
new TextareaField("Body", "Tresc")
), new FieldSet(
new FormAction("doPostMessage", "Send")
)
,new RequiredFields("ToID", "Subject", "Body")
);
}
function ReplayMessageForm() {
$message = DataObject::get_by_id("PrivateMessage", $this->urlParams['ID']);
$me = Member::currentUser();
return new Form($this, "ReplayMessageForm", new FieldSet(
new ReadonlyField("From", "Od", "$me->NickName"),
new ReadonlyField("ToID", "Do", $message->FromID),
new TextField("Subject", "Temat", "Re:".$message->Subject),
new TextareaField("Body", "Tresc")
), new FieldSet(
new FormAction("doPostMessage", "Send")
)
,new RequiredFields("Subject", "Body")
);
}
function doPostMessage($data, $form) {
$message = new PrivateMessage();
$message2 = new PrivateMessage();
$form->saveInto($message);
$message->FromID = Member::currentUserID();
$touser = DataObject::get_by_id("Member", $message->ToID);
$message->To = $touser->Nickname;
$message->write();
$message2 = $message->duplicate(false);
$message2->MarkSent();
$message2->write();
Director::redirect($this->Link().'thanks');
}
function thanks() {
return array(
'Content' => "widomosc zostala wyslana"
);
}
function message() {
$message = DataObject::get_by_id("PrivateMessage", $this->urlParams['ID']);
if(($message->ToID == Member::currentUserID()) or ($message->FromID ==Member::currentUserID() and $message->Status == 'Sent')) {
if($message->Status=="Unread")
$message->MarkRead();
return array(
'CurrentMessage' => $message
);
} else {
return array();
}
}
function draft() {
$message = DataObject::get_by_id("PrivateMessage", $this->urlParams['ID']);
if($message->ToID == Member::currentUserID() or ($message->FromID ==Member::currentUserID() and $message->Status == 'Sent') ) {
$message->MarkDraft();
return array(
'Content' => "Wiadomosc zostala przeniesiona do kosza");
}
}
function delete() {
$message = DataObject::get_by_id("PrivateMessage", $this->urlParams['ID']);
if(($message->ToID == Member::currentUserID() and $message->Status == 'Draft') or ($message->FromID ==Member::currentUserID() and $message->Status == 'Sent')) {
DataObject::delete_by_id("PrivateMessage", $this->urlParams['ID']);
return array(
'Content' => "Wiadomosc zostala usunieta");
}
}
function ReplayAble()
{
$message = DataObject::get_by_id("PrivateMessage", $this->urlParams['ID']);
if($message->Status == 'Read')
return true;
}
}
?>
and when i try to use any of this method in my .ss file I'm getting error:
FATAL ERROR: Object::__call() Method 'instance_get' not found in class 'PrivateMessage'
At line 199 in /var/www/pm/silverstripe/sapphire/core/Object.php
What's wrong?