From 3c97a446c7c170625e51b02058d2d560b227c4d0 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Mon, 17 Sep 2012 09:50:13 +0000
Subject: [PATCH] Poprawa błędu w klasie BotSession powodującego wielokrotne tworzenie wpisów w bazie danych sesyjnych (class=NULL, name=user_struct).

---
 class/BotSession.php |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/class/BotSession.php b/class/BotSession.php
index d273779..25ec23c 100644
--- a/class/BotSession.php
+++ b/class/BotSession.php
@@ -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 < 2) {
+				$this->PDO->query('DELETE FROM data WHERE class=NULL AND name=\'user_struct\'');
+				$this->PDO->query('INSERT OR REPLACE INTO data (class, name, value) VALUES (\'\', \'_version\', 2)');
+				$version = 2;
+			}
+			
 			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) {

--
Gitblit v1.9.1