Sequenzia/app/models/Dmail.php
2013-11-03 13:34:02 -05:00

88 lines
2.2 KiB
PHP
Executable File

<?php
class Dmail extends Rails\ActiveRecord\Base
{
public function to_name()
{
if (!$this->to_id)
return;
return $this->to->name;
}
public function from_name()
{
return $this->from->name;
}
public function mark_as_read()
{
$this->updateAttribute('has_seen', true);
if (!Dmail::where("to_id = ? AND has_seen = false", current_user()->id)->exists())
current_user()->updateAttribute('has_mail', false);
}
# iTODO:
public function send_dmail()
{
// if ($this->to->receive_dmails && is_int(strpos($this->to->email, '@')))
// UserMailer::deliver_dmail($this->to, $this->from, $this->title(), $this->body);
}
public function update_recipient()
{
$this->to->updateAttribute('has_mail', true);
}
protected function validations()
{
return array(
'to_id' => array('presence' => true),
'from_id' => array('presence' => true),
'title' => array('format' => ['with' => '/\S/']),
'body' => array('format' => ['with' => '/\S/'])
);
}
protected function associations()
{
return array(
'belongs_to' => array(
'to' => array('class_name' => 'User', 'foreign_key' => 'to_id'),
'from' => array('class_name' => 'User', 'foreign_key' => 'from_id')
)
);
}
protected function callbacks()
{
return [
'after_create' => ['update_recipient', 'send_dmail']
];
}
public function title()
{
$title = $this->getAttribute('title');
if ($this->parent_id && strpos($title, 'Re: ') !== 0) {
return "Re: " . $title;
} else {
return $title;
}
}
public function setToName($name)
{
if (!$user = User::where(['name' => $name])->first())
return;
$this->to_id = $user->id;
}
public function setFromName($name)
{
if (!$user = User::where(['name' => $name])->first())
return;
$this->from_id = $user->id;
}
}