|  |  | 
 |  |  |     | 
 |  |  |    /** | 
 |  |  |     * Nazwa modułu, którego zmienne klasa przetwarza | 
 |  |  |     * @var string max. 40 znaków | 
 |  |  |     * @var string max. 40 znaków | 
 |  |  |     */ | 
 |  |  |    var $class; | 
 |  |  |    protected $class = ''; | 
 |  |  |    protected $class_empty = TRUE; | 
 |  |  |     | 
 |  |  |    private $user; | 
 |  |  | 	 | 
 |  |  |     | 
 |  |  |    /** | 
 |  |  |     * Inicjuje klasę w zależności od użytkownika | 
 |  |  | 
 |  |  |       $this->user = sha1($user); | 
 |  |  |       $this->user_struct = parse_url($user); | 
 |  |  |        | 
 |  |  |       $this->class = ''; | 
 |  |  |       $this->class_empty = FALSE; | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    private function init() { | 
 |  |  |       if(strlen($this->class) == 0 && !$this->class_empty) { | 
 |  |  |          throw new Exception('Przed użyciem $msg->session należy ustawić nazwę modułu za pomocą metody setClass - patrz "Poradnik tworzenia modułów", dział "Klasa BotMessage", rozdział "Pole $session".'); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       if($this->PDO) { | 
 |  |  |          return NULL; | 
 |  |  |       } | 
 |  |  | 
 |  |  |          $this->PDO = new PDO('sqlite:'.BOT_TOPDIR.'/database/'.sha1($this->user).'.sqlite'); | 
 |  |  |          $this->PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); | 
 |  |  |          $this->PDO->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_TO_STRING); | 
 |  |  | 			 | 
 |  |  |          $st = $this->PDO->query('SELECT value FROM data WHERE class=\'\' AND name=\'_version\''); | 
 |  |  |          $row = $st->fetch(PDO::FETCH_ASSOC); | 
 |  |  |          if(is_array($row)) { | 
 |  |  |             $version = (int)$row['value']; | 
 |  |  |          } | 
 |  |  |          else | 
 |  |  |          { | 
 |  |  |             $version = 0; | 
 |  |  |          } | 
 |  |  |          $st->closeCursor(); | 
 |  |  | 			 | 
 |  |  |          if($version < 1) { | 
 |  |  |             $this->PDO->query('UPDATE data SET class=\'kino\' WHERE class=\'\' AND name=\'kino\''); | 
 |  |  |             $this->PDO->query('INSERT OR REPLACE INTO data (class, name, value) VALUES (\'\', \'_version\', 1)'); | 
 |  |  |             $version = 1; | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          if($version < 3) { | 
 |  |  |             $this->PDO->query('DELETE FROM data WHERE class IS NULL AND name=\'user_struct\''); | 
 |  |  |             $this->PDO->query('INSERT OR REPLACE INTO data (class, name, value) VALUES (\'\', \'_version\', 3)'); | 
 |  |  |             $version = 3; | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          return; | 
 |  |  |       } | 
 |  |  |        | 
 |  |  | 
 |  |  |          ); | 
 |  |  |           | 
 |  |  |          $files = glob(BOT_TOPDIR.'/db/*/'.$this->user_struct['user'].'.ggdb'); | 
 |  |  |          if(!$files) { | 
 |  |  |             return; | 
 |  |  |          } | 
 |  |  |           | 
 |  |  |          $this->PDO->beginTransaction(); | 
 |  |  |          $st = $this->PDO->prepare('INSERT OR REPLACE INTO data (class, name, value) VALUES (?, ?, ?)'); | 
 |  |  | 			 | 
 |  |  |          $st->execute(array('', '_version', 2)); | 
 |  |  |           | 
 |  |  |          foreach($files as $file) { | 
 |  |  |             $data = unserialize(file_get_contents($file)); | 
 |  |  | 
 |  |  |       return $return; | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    function setClass($class) { | 
 |  |  |       $this->class = $class; | 
 |  |  |    } | 
 |  |  | 	 | 
 |  |  |    function truncate() { | 
 |  |  |       $this->init(); | 
 |  |  |        |