perform housekeeping tasks for plugins loaded in user-context only

This commit is contained in:
Andrew Dolgov 2016-08-11 15:01:01 +03:00
parent d39a2f8005
commit 5cbd1fe8e4
2 changed files with 25 additions and 4 deletions

View File

@ -833,14 +833,17 @@
return $csrf_token == $_SESSION['csrf_token']; 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) { if ($owner_uid && SCHEMA_VERSION >= 100) {
$plugins = get_pref("_ENABLED_PLUGINS", $owner_uid); $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) { if (get_schema_version() > 100) {
PluginHost::getInstance()->load_data(); $pluginhost->load_data();
} }
} }
} }

View File

@ -179,6 +179,8 @@
$nf = 0; $nf = 0;
$bstarted = microtime(true); $bstarted = microtime(true);
$batch_owners = array();
// For each feed, we call the feed update function. // For each feed, we call the feed update function.
foreach ($feeds_to_update as $feed) { foreach ($feeds_to_update as $feed) {
if($debug) _debug("Base feed: $feed"); if($debug) _debug("Base feed: $feed");
@ -204,6 +206,9 @@
while ($tline = db_fetch_assoc($tmp_result)) { while ($tline = db_fetch_assoc($tmp_result)) {
if($debug) _debug(" => " . $tline["last_updated"] . ", " . $tline["id"] . " " . $tline["owner_uid"]); 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); $fstarted = microtime(true);
$rss = update_rss_feed($tline["id"], true, false); $rss = update_rss_feed($tline["id"], true, false);
_debug_suppress(false); _debug_suppress(false);
@ -220,6 +225,12 @@
microtime(true) - $bstarted, (microtime(true) - $bstarted) / $nf)); 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"; require_once "digest.php";
// Send feed digests by email if needed. // Send feed digests by email if needed.
@ -1502,6 +1513,14 @@
_debug("Removed $frows (feeds) $crows (cats) orphaned counter cache entries."); _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) { function housekeeping_common($debug) {
expire_cached_files($debug); expire_cached_files($debug);
expire_lock_files($debug); expire_lock_files($debug);
@ -1517,6 +1536,5 @@
//_debug("Cleaned $rc cached tags."); //_debug("Cleaned $rc cached tags.");
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_HOUSE_KEEPING, "hook_house_keeping", ""); PluginHost::getInstance()->run_hooks(PluginHost::HOOK_HOUSE_KEEPING, "hook_house_keeping", "");
} }
?> ?>