From 587c933112187483fac09fae61a95eae1db84b98 Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Sun, 03 Nov 2013 17:36:46 +0000 Subject: [PATCH] 1. Zmiana nazw kanałów AXN (Crime/Sci-Fi -> Black/White) 2. Usunięcie kanału RSS Linux News 3. Inne drobne zmiany (wspierane PHP >= 5.3) --- class/BotSession.php | 77 ++++++++++++++++++++++++++++++-------- 1 files changed, 61 insertions(+), 16 deletions(-) diff --git a/class/BotSession.php b/class/BotSession.php index 494f377..61511db 100644 --- a/class/BotSession.php +++ b/class/BotSession.php @@ -1,18 +1,29 @@ <?php /** - * Klasa przechowująca dane użytkownika. Całość przypomina mechanizm sesji w PHP. + * Klasa przechowująca dane przekazane przez użytkownika, + * w szczególności jego ustawienia. */ class BotSession { private $PDO; /** * Nazwa modułu, którego zmienne klasa przetwarza - * @var string max. 40 znaków + * @var string $class max. 40 znaków */ protected $class = ''; protected $class_empty = TRUE; + /** + * Pseudo-URL użytkownika. + * @see BotUser + * @var string $user URL użytkownika + */ private $user; + /** + * Klasa z identyfikatorem użytkownika + * @var BotUser $user_struct + */ + private $user_struct; /** * Inicjuje klasę w zależności od użytkownika @@ -39,8 +50,8 @@ $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); + $row = $st->fetch(PDO::FETCH_ASSOC); + if(is_array($row)) { $version = (int)$row['value']; } else @@ -55,10 +66,10 @@ $version = 1; } - if($version < 3) { + if($version < 4) { $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; + $this->PDO->query('INSERT OR REPLACE INTO data (class, name, value) VALUES (\'\', \'_version\', 4)'); + $version = 4; } return; @@ -71,7 +82,7 @@ $this->PDO->query( 'CREATE TABLE data ( - class VARCHAR(50), + class VARCHAR(50) NOT NULL DEFAULT \'\', name VARCHAR(40) NOT NULL, value TEXT NOT NULL, PRIMARY KEY ( @@ -81,6 +92,8 @@ )' ); + $this->PDO->query('INSERT INTO data (class, name, value) VALUES (\'\', \'_version\', 4)'); + $files = glob(BOT_TOPDIR.'/db/*/'.$this->user_struct['user'].'.ggdb'); if(!$files) { return; @@ -89,12 +102,10 @@ $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) { - $st->execute(array($this->class, $name, $value)); + $st->execute(array($this->class, $name, serialize($value))); } } @@ -112,6 +123,19 @@ } } + /** + * Ustawia nazwę modułu/klasy, której zmienne będą przetwarzane + * @param string $class Nazwa modułu + */ + function setClass($class) { + $this->class = $class; + } + + /** + * Pobiera zmienną modułu o podanej nazwie (getter). + * @param string $name Nazwa zmiennej + * @return mixed Wartość zmiennej lub NULL + */ function __get($name) { $this->init(); @@ -128,6 +152,11 @@ } } + /** + * Ustawia zmienną o podanej nazwie + * @param string $name Nazwa zmiennej + * @param mixed $value Wartość zmiennej + */ function __set($name, $value) { $this->init(); @@ -135,6 +164,11 @@ $st->execute(array($this->class, $name, serialize($value))); } + /** + * Sprawdza czy podana zmienna została ustawiona. + * @param string $name Nazwa zmiennej + * @return bool Czy zmienna istnieje? + */ function __isset($name) { $this->init(); @@ -145,6 +179,10 @@ return ($st[0]>0); } + /** + * Usuwa zmienną o podanej nazwie + * @param string $name Nazwa zmiennej + */ function __unset($name) { $this->init(); @@ -152,6 +190,10 @@ $st->execute(array($this->class, $name)); } + /** + * Zapamiętuje tablicę zmiennych danego modułu + * @param array $array Tablica zmiennych + */ function push($array) { $this->PDO->beginTransaction(); foreach($array as $name => $value) { @@ -160,6 +202,10 @@ $this->PDO->commit(); } + /** + * Zwraca wszystkie ustawione zmienne danego modułu + * @return array Lista wszystkich zmiennych + */ function pull() { $this->init(); @@ -169,16 +215,15 @@ $return = array(); foreach($st as $row) { - $return[$row['name']] = $row['value']; + $return[$row['name']] = unserialize($row['value']); } return $return; } - function setClass($class) { - $this->class = $class; - } - + /** + * Usuwa wszystkie zmienne sesyjne danego modułu. + */ function truncate() { $this->init(); -- Gitblit v1.9.1