예제 #1
0
파일: ParanoidTest.php 프로젝트: Konro1/pms
 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'));
 }
예제 #2
0
파일: Paranoid.php 프로젝트: Konro1/pms
 /**
  * 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;
     }
 }