Jacek Kowalski
2012-09-17 cb89d585d3031bb2dfb4e9bdfe81a1060d2c8eca
class/BotSession.php
@@ -9,10 +9,10 @@
    * Nazwa modułu, którego zmienne klasa przetwarza
    * @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
@@ -21,11 +21,11 @@
      $this->user = sha1($user);
      $this->user_struct = parse_url($user);
      
      $this->class = '';
      $this->class_empty = FALSE;
   }
   
   private function init() {
      if(strlen($this->class) == 0) {
      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".');
      }
      
@@ -37,6 +37,30 @@
         $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\'');
         if($st->rowCount > 0) {
            $row = $st->fetch(PDO::FETCH_ASSOC);
            $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;
      }
      
@@ -65,6 +89,8 @@
         $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));
            foreach($data as $name => $value) {