addHeader('Location', '../'); return $response; } public function child($name) { $ircuser = $this->getIRCUser($name); if(!$ircuser) { return new FileNotFound(); } else { return new Edit($this->conn, $ircuser); } } } class Edit extends IRCResource { public $addSlash = true; protected $ircuser; public function __construct($conn, $ircuser) { parent::__construct($conn); $this->ircuser = $ircuser; } public function title($req) { return sprintf("edit %s", htmlentities($this->ircuser->nick)); } public function render($req) { if(strtolower($this->ircuser->netid) != strtolower($req->user)) { $page = new Forbidden(); return $page->render($req); } else { return parent::render($req); } } public function child_save() { return new EditSaver($this->conn, $this->ircuser); } public function child_delete() { return new Delete($this->conn, $this->ircuser); } } class EditSaver extends IRCResource { private $ircuser; public function __construct($conn, $ircuser) { parent::__construct($conn); $this->ircuser = $ircuser; } public function render($req) { if(strtolower($this->ircuser->netid) != strtolower($req->user)) { $page = new Forbidden(); return $page->render($req); } else { $this->processEdit($req); $redirect = new Redirector('../../'); return $redirect->render($req); } } private function processEdit($req) { if($req->post['oldpass'] == $this->ircuser->password) { $this->ircuser->password = $req->post['password']; $this->ircuser->update($this->conn); } } } ?>