示例#1
0
 public function action_create($note_id = null)
 {
     if (!$note_id || !($note = Model_Note::find($note_id))) {
         throw new \HttpNotFoundException();
     }
     $this->check_browse_authority($note->public_flag, $note->member_id);
     // Lazy validation
     if (\Input::post('body')) {
         \Util_security::check_csrf();
         // Create a new comment
         $comment = new Model_NoteComment(array('body' => \Input::post('body'), 'note_id' => $note_id, 'member_id' => $this->u->id));
         // Save the post and the comment will save too
         if ($comment->save()) {
             \Session::set_flash('message', 'コメントしました。');
         } else {
             \Session::set_flash('error', 'コメントに失敗しました。');
         }
         \Response::redirect('note/detail/' . $note_id);
     } else {
         Controller_Note::action_detail($note_id);
     }
 }
示例#2
0
 /**
  * @dataProvider update_like_provider
  */
 public function test_update_like($member_id)
 {
     $note_id = self::$note_id;
     $note_comment_id = self::$note_comment_id;
     // note_like save
     \Util_Develop::sleep();
     $is_liked = self::execute_like($note_comment_id, $member_id);
     $note = Model_Note::find($note_id);
     $note_comment = Model_NoteComment::find($note_comment_id);
     $note_comment_like = \Util_Orm::get_last_row('\\Note\\Model_NoteCommentLike', array('note_comment_id' => $note_comment_id));
     // 件数
     $like_count = \Util_Orm::get_count_all('\\Note\\Model_NoteCommentLike', array('note_comment_id' => $note_comment_id));
     $like_count_expect = $is_liked ? self::$like_count + 1 : self::$like_count - 1;
     $this->assertEquals($like_count_expect, $like_count);
     // 値
     $this->assertEquals($like_count, $note_comment->like_count);
     if (!$is_liked) {
         $this->assertNull($note_comment_like);
     }
     // timeline view cache check
     if (self::$is_check_view_cache) {
         $this->assertEquals(self::$view_cache_before, \Note\Site_Util::get_view_cache(self::$timeline_id));
     }
 }
示例#3
0
 public function test_delete_notice()
 {
     // 事前準備
     \Model_MemberConfig::set_value(2, \Notice\Form_MemberConfig::get_name(self::$type_key), 1);
     \Model_MemberConfig::set_value(2, \Notice\Site_Util::get_member_config_name_for_watch_content(self::$type_key), 1);
     \Model_MemberConfig::set_value(3, \Notice\Form_MemberConfig::get_name(self::$type_key), 1);
     \Model_MemberConfig::set_value(3, \Notice\Site_Util::get_member_config_name_for_watch_content(self::$type_key), 1);
     self::$member_id = 1;
     self::set_note();
     $note_id = self::$note_id;
     $foreign_id = self::$note_id;
     $notice_count_all_before = \Notice\Model_Notice::get_count();
     $notice_status_count_all_before = \Notice\Model_NoticeStatus::get_count();
     $notice_member_from_count_all_before = \Notice\Model_NoticeMemberFrom::get_count();
     $member_watch_content_count_all_before = \Notice\Model_MemberWatchContent::get_count();
     // 他人がイイね
     $like_id = Model_NoteLike::change_registered_status4unique_key(array('note_id' => $note_id, 'member_id' => 2));
     $notice = \Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $note_id, \Notice\Site_Util::get_notice_type(self::$type_key));
     $this->assertNotNull($notice);
     // 件数確認
     $this->assertEquals($notice_count_all_before + 1, \Notice\Model_Notice::get_count());
     $this->assertEquals($notice_status_count_all_before + 1, \Notice\Model_NoticeStatus::get_count());
     $this->assertEquals($notice_member_from_count_all_before + 1, \Notice\Model_NoticeMemberFrom::get_count());
     $this->assertEquals($member_watch_content_count_all_before + 1, \Notice\Model_MemberWatchContent::get_count());
     // 関連テーブルのレコードが作成されていることを確認
     $this->assertNotNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(self::$member_id, $notice->id));
     $this->assertNotNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice->id, 2));
     $this->assertNotNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $note_id, 2));
     $this->assertNotNull(\Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $note_id, \Notice\Site_Util::get_notice_type(self::$type_key)));
     // イイねを取り消し
     $like_id = Model_NoteLike::change_registered_status4unique_key(array('note_id' => $note_id, 'member_id' => 2));
     // 件数確認
     $this->assertEquals($notice_count_all_before, \Notice\Model_Notice::get_count());
     $this->assertEquals($notice_status_count_all_before, \Notice\Model_NoticeStatus::get_count());
     $this->assertEquals($notice_member_from_count_all_before, \Notice\Model_NoticeMemberFrom::get_count());
     $this->assertEquals($member_watch_content_count_all_before + 1, \Notice\Model_MemberWatchContent::get_count());
     // watch は解除されない
     // 関連テーブルのレコードが削除されていることを確認
     $this->assertNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(self::$member_id, $notice->id));
     $this->assertNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice->id, 2));
     $this->assertNotNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $note_id, 2));
     // watch は解除されない
     $this->assertNull(\Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $note_id, \Notice\Site_Util::get_notice_type(self::$type_key)));
     // 他人のイイね+自分がコメント
     $note_like_id = Model_NoteLike::change_registered_status4unique_key(array('note_id' => $note_id, 'member_id' => 2));
     self::save_comment(1, 'Test comment1.');
     $notice_like = \Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $note_id, \Notice\Site_Util::get_notice_type(self::$type_key));
     $notice_comment = \Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $note_id, \Notice\Site_Util::get_notice_type('comment'));
     $this->assertNotNull($notice_like);
     $this->assertNotNull($notice_comment);
     // 件数確認
     $this->assertEquals($notice_count_all_before + 2, \Notice\Model_Notice::get_count());
     $this->assertEquals($notice_status_count_all_before + 2, \Notice\Model_NoticeStatus::get_count());
     $this->assertEquals($notice_member_from_count_all_before + 2, \Notice\Model_NoticeMemberFrom::get_count());
     $this->assertEquals($member_watch_content_count_all_before + 1, \Notice\Model_MemberWatchContent::get_count());
     // 関連テーブルのレコードが作成されていることを確認
     $this->assertNotNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(2, $notice_comment->id));
     $this->assertNotNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(self::$member_id, $notice_like->id));
     $this->assertNotNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice_like->id, 2));
     $this->assertNotNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice_comment->id, self::$member_id));
     $this->assertNotNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $note_id, 2));
     $this->assertNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $note_id, self::$member_id));
     $this->assertNotNull(\Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $note_id, \Notice\Site_Util::get_notice_type(self::$type_key)));
     // イイねを取り消し
     $like_id = Model_NoteLike::change_registered_status4unique_key(array('note_id' => $note_id, 'member_id' => 2));
     // 件数確認
     $this->assertEquals($notice_count_all_before + 1, \Notice\Model_Notice::get_count());
     $this->assertEquals($notice_status_count_all_before + 1, \Notice\Model_NoticeStatus::get_count());
     $this->assertEquals($notice_member_from_count_all_before + 1, \Notice\Model_NoticeMemberFrom::get_count());
     $this->assertEquals($member_watch_content_count_all_before + 1, \Notice\Model_MemberWatchContent::get_count());
     // watch は解除されない
     // 関連テーブルのレコードが削除されていることを確認
     $this->assertNotNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(2, $notice_comment->id));
     $this->assertNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(self::$member_id, $notice_like->id));
     $this->assertNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice_like->id, 2));
     $this->assertNotNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice_comment->id, self::$member_id));
     $this->assertNotNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $note_id, 2));
     $this->assertNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $note_id, self::$member_id));
     $this->assertNull(\Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $note_id, \Notice\Site_Util::get_notice_type(self::$type_key)));
     // 他人がイイね
     $note_like_id = Model_NoteLike::change_registered_status4unique_key(array('note_id' => $note_id, 'member_id' => 3));
     $notice = \Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $note_id, \Notice\Site_Util::get_notice_type(self::$type_key));
     $this->assertNotNull($notice);
     // note 削除
     $note = Model_Note::find($note_id);
     $note->delete_with_relations();
     // 件数確認
     $this->assertEquals($notice_count_all_before, \Notice\Model_Notice::get_count());
     $this->assertEquals($notice_status_count_all_before, \Notice\Model_NoticeStatus::get_count());
     $this->assertEquals($notice_member_from_count_all_before, \Notice\Model_NoticeMemberFrom::get_count());
     $this->assertEquals($member_watch_content_count_all_before, \Notice\Model_MemberWatchContent::get_count());
     // 関連テーブルのレコードが削除されていることを確認
     $this->assertNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(self::$member_id, $notice->id));
     $this->assertNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice->id, 3));
     $this->assertNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $note_id, 3));
     $this->assertNull(\Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $note_id, \Notice\Site_Util::get_notice_type(self::$type_key)));
 }