Sequenzia/app/controllers/DmailController.php
2013-11-08 11:37:29 -05:00

87 lines
2.7 KiB
PHP
Executable File

<?php
class DmailController extends ApplicationController
{
protected function filters()
{
return [
'before' => ['blocked_only']
];
}
public function preview()
{
$this->setLayout(false);
}
public function showPreviousMessages()
{
$this->dmails = Dmail::where("(to_id = ? or from_id = ?) and parent_id = ? and id < ?",
$this->current_user->id, $this->current_user->id, $this->params()->parent_id, $this->params()->id)
->order("id asc")->take();
$this->setLayout(false);
}
public function compose()
{
$this->dmail = new Dmail();
}
public function create()
{
if (Dmail::where('from_id = ? AND created_at > ?', $this->current_user->id, date('Y-m-d H:i:s', time()-3600))->count() > 10) {
$this->notice("You can't send more than 10 dmails per hour.");
$this->redirectTo('#inbox');
return;
}
$dmail = $this->params()->dmail;
if (empty($dmail['parent_id']))
$dmail['parent_id'] = null;
$this->dmail = Dmail::create(array_merge($dmail, ['from_id' => $this->current_user->id]));
if ($this->dmail->errors()->none()) {
$this->notice("Message sent to ".$dmail['to_name']);
$this->redirectTo("#inbox");
} else {
$this->notice("Error: " . $this->dmail->errors()->fullMessages(", "));
$this->render('compose');
}
}
public function inbox()
{
$this->dmails = Dmail::where("to_id = ? or from_id = ?", $this->current_user->id, $this->current_user->id)->order("created_at desc")->paginate($this->page_number(), 25);
}
public function show()
{
$this->dmail = Dmail::find($this->params()->id);
if ($this->dmail->to_id != $this->current_user->id && $this->dmail->from_id != $this->current_user->id) {
$this->notice("Access denied");
$this->redirectTo("user#login");
return;
}
if ($this->dmail->to_id == $this->current_user->id) {
$this->dmail->mark_as_read($this->current_user);
}
}
public function confirmMarkAllRead()
{
}
public function markAllRead()
{
if ($this->params()->commit == "Yes") {
foreach (Dmail::where("to_id = ? and has_seen = false", $this->current_user->id)->take() as $dmail)
$dmail->updateAttribute('has_seen', true);
$this->current_user->updateAttribute('has_mail', false);
$this->respond_to_success("All messages marked as read", ['action' => "inbox"]);
} else {
$this->redirectTo("#inbox");
}
}
}