summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2016-08-11 15:01:01 +0300
committerAndrew Dolgov <[email protected]>2016-08-11 15:01:01 +0300
commit5cbd1fe8e4d9a67b002a681ab6bc2bc3ab60c628 (patch)
tree6691d8ec96323c9ad37ceb14485f6fb4f4f97194
parentd39a2f8005ba69f2940c8e3b547fbb18dc23bef0 (diff)
perform housekeeping tasks for plugins loaded in user-context only
-rwxr-xr-xinclude/functions.php9
-rw-r--r--include/rssfuncs.php20
2 files changed, 25 insertions, 4 deletions
diff --git a/include/functions.php b/include/functions.php
index 3ccc09d75..3902ac45a 100755
--- a/include/functions.php
+++ b/include/functions.php
@@ -833,14 +833,17 @@
return $csrf_token == $_SESSION['csrf_token'];
}
- function load_user_plugins($owner_uid) {
+ function load_user_plugins($owner_uid, $pluginhost = false) {
+
+ if (!$pluginhost) $pluginhost = PluginHost::getInstance();
+
if ($owner_uid && SCHEMA_VERSION >= 100) {
$plugins = get_pref("_ENABLED_PLUGINS", $owner_uid);
- PluginHost::getInstance()->load($plugins, PluginHost::KIND_USER, $owner_uid);
+ $pluginhost->load($plugins, PluginHost::KIND_USER, $owner_uid);
if (get_schema_version() > 100) {
- PluginHost::getInstance()->load_data();
+ $pluginhost->load_data();
}
}
}
diff --git a/include/rssfuncs.php b/include/rssfuncs.php
index 522e4bf22..cbd011e5c 100644
--- a/include/rssfuncs.php
+++ b/include/rssfuncs.php
@@ -179,6 +179,8 @@
$nf = 0;
$bstarted = microtime(true);
+ $batch_owners = array();
+
// For each feed, we call the feed update function.
foreach ($feeds_to_update as $feed) {
if($debug) _debug("Base feed: $feed");
@@ -204,6 +206,9 @@
while ($tline = db_fetch_assoc($tmp_result)) {
if($debug) _debug(" => " . $tline["last_updated"] . ", " . $tline["id"] . " " . $tline["owner_uid"]);
+ if (array_search($tline["owner_uid"], $batch_owners) === FALSE)
+ array_push($batch_owners, $tline["owner_uid"]);
+
$fstarted = microtime(true);
$rss = update_rss_feed($tline["id"], true, false);
_debug_suppress(false);
@@ -220,6 +225,12 @@
microtime(true) - $bstarted, (microtime(true) - $bstarted) / $nf));
}
+ foreach ($batch_owners as $owner_uid) {
+ _debug("Running housekeeping tasks for user $owner_uid...");
+
+ housekeeping_user($owner_uid);
+ }
+
require_once "digest.php";
// Send feed digests by email if needed.
@@ -1502,6 +1513,14 @@
_debug("Removed $frows (feeds) $crows (cats) orphaned counter cache entries.");
}
+ function housekeeping_user($owner_uid) {
+ $tmph = new PluginHost();
+
+ load_user_plugins($owner_uid, $tmph);
+
+ $tmph->run_hooks(PluginHost::HOOK_HOUSE_KEEPING, "hook_house_keeping", "");
+ }
+
function housekeeping_common($debug) {
expire_cached_files($debug);
expire_lock_files($debug);
@@ -1517,6 +1536,5 @@
//_debug("Cleaned $rc cached tags.");
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_HOUSE_KEEPING, "hook_house_keeping", "");
-
}
?>