+ function load_data($force = false) {
+ if ($this->owner_uid && (!$_SESSION["plugin_storage"] || $force)) {
+ $plugin = db_escape_string($plugin);
+
+ $result = db_query($this->link, "SELECT name, content FROM ttrss_plugin_storage
+ WHERE owner_uid = '".$this->owner_uid."'");
+
+ while ($line = db_fetch_assoc($result)) {
+ $this->storage[$line["name"]] = unserialize($line["content"]);
+ }
+
+ $_SESSION["plugin_storage"] = $this->storage;
+ }
+ }
+
+ private function save_data($plugin) {
+ if ($this->owner_uid) {
+ $plugin = db_escape_string($plugin);
+
+ db_query($this->link, "BEGIN");
+
+ $result = db_query($this->link,"SELECT id FROM ttrss_plugin_storage WHERE
+ owner_uid= '".$this->owner_uid."' AND name = '$plugin'");
+
+ if (!isset($this->storage[$plugin]))
+ $this->storage[$plugin] = array();
+
+ $content = db_escape_string(serialize($this->storage[$plugin]));
+
+ if (db_num_rows($result) != 0) {
+ db_query($this->link, "UPDATE ttrss_plugin_storage SET content = '$content'
+ WHERE owner_uid= '".$this->owner_uid."' AND name = '$plugin'");
+
+ } else {
+ db_query($this->link, "INSERT INTO ttrss_plugin_storage
+ (name,owner_uid,content) VALUES
+ ('$plugin','".$this->owner_uid."','$content')");
+ }
+
+ db_query($this->link, "COMMIT");
+ }
+ }
+
+ function set($sender, $name, $value, $sync = true) {
+ $idx = get_class($sender);
+
+ if (!isset($this->storage[$idx]))
+ $this->storage[$idx] = array();
+
+ $this->storage[$idx][$name] = $value;
+
+ $_SESSION["plugin_storage"] = $this->storage;
+
+ if ($sync) $this->save_data(get_class($sender));
+ }
+
+ function get($sender, $name, $default_value) {
+ $idx = get_class($sender);
+
+ if (isset($this->storage[$idx][$name])) {
+ return $this->storage[$idx][$name];
+ } else {
+ return $default_value;
+ }
+ }
+
+ function get_all($sender) {
+ $idx = get_class($sender);
+
+ return $this->storage[$idx];
+ }