public function test_default_filter() { $video = Jam::find('test_video', 1); $video->delete(); $this->assertCount(3, Jam::all('test_video')); Jam_Behavior_Paranoid::filter(Jam_Behavior_Paranoid::ALL); $this->assertCount(5, Jam::all('test_video')); Jam_Behavior_Paranoid::filter(Jam_Behavior_Paranoid::DELETED); $this->assertCount(2, Jam::all('test_video')); Jam_Behavior_Paranoid::filter(Jam_Behavior_Paranoid::ALL); $video = Jam::all('test_video')->where(':primary_key', '=', 1)->first(); $video->restore_delete(); Jam_Behavior_Paranoid::filter(Jam_Behavior_Paranoid::NORMAL); $this->assertCount(4, Jam::all('test_video')); Jam_Behavior_Paranoid::filter(Jam_Behavior_Paranoid::ALL); $this->assertCount(5, Jam::all('test_video')); Jam_Behavior_Paranoid::filter(Jam_Behavior_Paranoid::DELETED); $this->assertCount(1, Jam::all('test_video')); $video->real_delete(); Jam_Behavior_Paranoid::filter(Jam_Behavior_Paranoid::NORMAL); $this->assertCount(3, Jam::all('test_video')); Jam_Behavior_Paranoid::filter(Jam_Behavior_Paranoid::ALL); $this->assertCount(4, Jam::all('test_video')); Jam_Behavior_Paranoid::filter(Jam_Behavior_Paranoid::DELETED); $this->assertCount(1, Jam::all('test_video')); }
/** * Perform the actual where modification when it is needed * * @param Jam_Query_Builder_Select $builder */ public function builder_paranoid_filter(Database_Query $builder) { $filter_type = $builder->params('paranoid_filter_type') ?: Jam_Behavior_Paranoid::filter(); switch ($filter_type) { case Jam_Behavior_Paranoid::ALL: break; case Jam_Behavior_Paranoid::DELETED: $builder->where($this->_field, '=', TRUE); break; case Jam_Behavior_Paranoid::NORMAL: default: $builder->where($this->_field, '=', FALSE); break; } }