「誕生日つぶやく」から「リマインダー」に変更
誕生日つぶやくものを作ろうと思ったけど、
色々あってリマインダーを作成することにしました!
テーブルは前回にクラス図で抽出した
userテーブルと、reminderテーブル作成します。
・remindersテーブル
CREATE TABLE IF NOT EXISTS `reminders` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`userid` int(5) NOT NULL,
`memo` varchar(110) NOT NULL,
`tweettime` datetime NOT NULL,
`option` int(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
・usersテーブル
CREATE TABLE IF NOT EXISTS `users` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`username` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
cakephp用OAuth認証:http://code.42dh.com/oauth/
の 「OAuth consumer class」 をダウンロードしてvendersフォルダにいれる
コントローラーをuserとreminderと分けようと思います
・users_controller.php
'OAuth'.DS.'oauth_consumer.php'));
App::import('Vendor', 'oauth', array('file' => 'OAuth'.DS.'OAuth.php'));
class UsersController extends AppController {
var $name = 'Users';
//認証画面へ飛ぶ
function login() {
$consumer = $this->createConsumer();
$requestToken = $consumer->getRequestToken('http://twitter.com/oauth/request_token', '飛んでほしいURL(この場合はfunction check)');$this->Session->write('twitter_request_token', $requestToken);
$this->redirect('http://twitter.com/oauth/authorize?oauth_token=' . $requestToken->key);
}private function createConsumer() {
return new OAuth_Consumer('自分の', '自分の');
}
//IDがあるかどうかチェックする(なければuserテーブルに登録)
public function check() {$user = new User();
$requestToken = $this->Session->read('twitter_request_token');
$consumer = $this->createConsumer();$accessToken = $consumer->getAccessToken('http://twitter.com/oauth/access_token', $requestToken);
$data = $consumer->getFullResponse();
$name = $user->explode($data);if(!$this->User->find(array("User.username" => $name))){
$this->data['username']=$name;
$this->User->save($this->data);
}$data = $this->User->find(array("User.username" => $name));
$this->Session->write('username', $data['User']);//useridとusernameを持ってindexにリダイレクト
$this->redirect(array('controller'=>'reminders','action' => 'index'));
}
}
・reminders_controller.phpfunction index() {
$this->Reminder->recursive = 0;//user_controllerでセッションに書き込んだidを使って、where句で絞る
$user = $this->Session->read('username');
$this->set('reminders', $this->paginate(array("userid" => $user['id'])));
}