public function __construct($report_id)
 {
     parent::__construct();
     $this->report_id = $report_id;
     $this->report_namespace = $report_id;
     if (!isset($this->session['trackers']['reports'][$this->report_namespace]['has_changed'])) {
         $this->session['trackers']['reports'][$this->report_namespace] = array('has_changed' => false, 'checkout_date' => $_SERVER['REQUEST_TIME']);
     }
     $this->session_namespace =& $this->session['trackers']['reports'][$this->report_namespace];
     $this->session_namespace_path = ".trackers.reports.{$this->report_namespace}";
 }
 protected function destroySession()
 {
     $session = new Codendi_Session();
     $session->destroy();
 }
 public function test_Overloading_namespace()
 {
     $pseudo_php_session = array();
     $session = new Codendi_Session($pseudo_php_session);
     $this->assertFalse(isset($session->riri));
     $this->assertFalse(isset($pseudo_php_session['riri']));
     $session->changeSessionNamespace('riri');
     $this->assertFalse(isset($session->riri));
     $this->assertTrue(isset($pseudo_php_session['riri']));
     $session->fifi = 'loulou';
     $this->assertEqual($pseudo_php_session['riri']['fifi'], 'loulou');
     $this->assertEqual($session->fifi, 'loulou');
     $session->mickey = array('friend' => 'pluto');
     $session->changeSessionNamespace('mickey');
     $this->assertEqual($session->friend, 'pluto');
     $this->assertEqual($session->get('friend'), 'pluto');
     $this->assertEqual($pseudo_php_session['riri']['mickey']['friend'], 'pluto');
     $session->changeSessionNamespace('.');
     $this->assertNull($session->friend);
     $this->assertTrue(isset($session->riri));
     $session->changeSessionNamespace('.riri');
     $this->assertTrue(isset($session->mickey));
     $session->changeSessionNamespace('.');
     $session->changeSessionNamespace('riri.mickey');
     $this->assertTrue(isset($session->friend));
     $session->changeSessionNamespace('.riri.mickey');
     $this->assertTrue(isset($session->friend));
     // {{{ PHP prevents us to do thing like that. Which is too bad
     $session->changeSessionNamespace('.riri');
     //
     // Check behaviour __get and references.
     // The expected error (notice) is:
     // Unexpected PHP error [Indirect modification of overloaded property Codendi_Session::$fifi has no effect
     if (version_compare(PHP_VERSION, '5.2.0', '>=')) {
         // the error is raised only for further php version. 5.1.6 is silent
         $this->expectError();
     }
     //here you get the variable value not the reference
     $a =& $session->fifi;
     $a = 66;
     $this->assertEqual($session->fifi, 'loulou');
     // the workaround:
     //here you get the reference
     $b =& $session->get('fifi');
     $b = 66;
     $this->assertEqual($session->fifi, 66);
     // }}}
 }