summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2012-12-27 19:20:12 +0400
committerAndrew Dolgov <[email protected]>2012-12-27 19:20:36 +0400
commit5d9abb1e11262b5ef7c6f4695590ce5bdb257b85 (patch)
treeb87b628efa00e479eb37a635827b802a61a26746 /classes
parentd8a1d2a25b2247e5a63f5b0ab7f0bd9423a217e5 (diff)
add plugin storage table to schema; add ability to clear plugin data
Diffstat (limited to 'classes')
-rw-r--r--classes/pluginhost.php24
-rw-r--r--classes/pref/prefs.php21
2 files changed, 35 insertions, 10 deletions
diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index e43b39f9d..d7db7481c 100644
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -1,9 +1,4 @@
<?php
-/* create table ttrss_plugin_storage
- (id serial not null primary key, name varchar(100) not null,
- owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE,
- content text not null) - not in schema yet
-*/
class PluginHost {
private $link;
private $hooks = array();
@@ -81,9 +76,9 @@ class PluginHost {
return array();
}
}
- function load_all($kind) {
+ function load_all($kind, $owner_uid = false) {
$plugins = array_map("basename", glob("plugins/*"));
- $this->load(join(",", $plugins), $kind);
+ $this->load(join(",", $plugins), $kind, $owner_uid);
}
function load($classlist, $kind, $owner_uid = false) {
@@ -263,7 +258,7 @@ class PluginHost {
if ($sync) $this->save_data(get_class($sender));
}
- function get($sender, $name, $default_value) {
+ function get($sender, $name, $default_value = false) {
$idx = get_class($sender);
if (isset($this->storage[$idx][$name])) {
@@ -278,5 +273,18 @@ class PluginHost {
return $this->storage[$idx];
}
+
+ function clear_data($sender) {
+ if ($this->owner_uid) {
+ $idx = get_class($sender);
+
+ unset($this->storage[$idx]);
+
+ db_query($this->link, "DELETE FROM ttrss_plugin_storage WHERE name = '$idx'
+ AND owner_uid = " . $this->owner_uid);
+
+ $_SESSION["plugin_storage"] = $this->storage;
+ }
+ }
}
?>
diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php
index 0922e43a8..bb82b355e 100644
--- a/classes/pref/prefs.php
+++ b/classes/pref/prefs.php
@@ -683,8 +683,9 @@ class Pref_Prefs extends Handler_Protected {
$system_enabled = array_map("trim", explode(",", PLUGINS));
$user_enabled = array_map("trim", explode(",", get_pref($this->link, "_ENABLED_PLUGINS")));
- $tmppluginhost = new PluginHost($link);
- $tmppluginhost->load_all($tmppluginhost::KIND_ALL);
+ $tmppluginhost = new PluginHost($this->link);
+ $tmppluginhost->load_all($tmppluginhost::KIND_ALL, $_SESSION["uid"]);
+ $tmppluginhost->load_data(true);
foreach ($tmppluginhost->get_plugins() as $name => $plugin) {
$about = $plugin->about();
@@ -707,6 +708,11 @@ class Pref_Prefs extends Handler_Protected {
print "<td>" . htmlspecialchars(sprintf("%.2f", $about[0])) . "</td>";
print "<td>" . htmlspecialchars($about[2]) . "</td>";
+ if (count($tmppluginhost->get_all($plugin)) > 0) {
+ print "<td><a href='#' onclick=\"clearPluginData('$name')\"
+ class='visibleLink'>".__("Clear data")."</a></td>";
+ }
+
print "</tr>";
}
@@ -752,6 +758,10 @@ class Pref_Prefs extends Handler_Protected {
print "<td>" . htmlspecialchars(sprintf("%.2f", $about[0])) . "</td>";
print "<td>" . htmlspecialchars($about[2]) . "</td>";
+ if (count($tmppluginhost->get_all($plugin)) > 0) {
+ print "<td><a href='#' onclick=\"clearPluginData('$name')\" class='visibleLink'>".__("Clear data")."</a></td>";
+ }
+
print "</tr>";
@@ -846,5 +856,12 @@ class Pref_Prefs extends Handler_Protected {
set_pref($this->link, "_ENABLED_PLUGINS", $plugins);
}
+
+ function clearplugindata() {
+ $name = db_escape_string($_REQUEST["name"]);
+
+ global $pluginhost;
+ $pluginhost->clear_data($pluginhost->get_plugin($name));
+ }
}
?>