fix bug with cached comment stats
This commit is contained in:
@@ -5,7 +5,7 @@ require_once 'config.php';
|
|||||||
$instance = $config['mastodon-instance'];
|
$instance = $config['mastodon-instance'];
|
||||||
$uid = $config['user-id'];
|
$uid = $config['user-id'];
|
||||||
$searchurl = $config['search-url'];
|
$searchurl = $config['search-url'];
|
||||||
$search = isset($_GET['search']) ? $_GET['search'] : '';
|
$search = isset($_GET['search']) ? strtolower($_GET['search']) : '';
|
||||||
$debug_on = $config['debug'];
|
$debug_on = $config['debug'];
|
||||||
/* cache files */
|
/* cache files */
|
||||||
$ctt = $config['cache_toots'];
|
$ctt = $config['cache_toots'];
|
||||||
@@ -40,6 +40,14 @@ function write_db($db, $data, $id) {
|
|||||||
$encoded = json_encode($file, JSON_PRETTY_PRINT);
|
$encoded = json_encode($file, JSON_PRETTY_PRINT);
|
||||||
file_put_contents($db, $encoded, LOCK_EX);
|
file_put_contents($db, $encoded, LOCK_EX);
|
||||||
}
|
}
|
||||||
|
/* delete file */
|
||||||
|
function delete_db($db, $id) {
|
||||||
|
// if $id is given, it's a comments file. Replace placeholder in filename
|
||||||
|
if ($id) {
|
||||||
|
$db = str_replace('%id', $id, $db);
|
||||||
|
}
|
||||||
|
unlink($db);
|
||||||
|
}
|
||||||
/* access data from file */
|
/* access data from file */
|
||||||
function read_db($db, &$data, $cachetime, &$cachebreak, $id) {
|
function read_db($db, &$data, $cachetime, &$cachebreak, $id) {
|
||||||
// if $id is given, it's a comments file. Replace placeholder in filename
|
// if $id is given, it's a comments file. Replace placeholder in filename
|
||||||
@@ -185,11 +193,19 @@ if ($cachebreak) {
|
|||||||
debug("Toots cache is up-to-date");
|
debug("Toots cache is up-to-date");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* prepare empty $result array with structure */
|
// create empty $result
|
||||||
$result = ['comments' => [], 'stats' => ['reblogs' => 0, 'favs' => 0, 'replies' => 0, 'url' => '', 'root' => 0]];
|
$result_empty = ['comments' => [], 'stats' => ['reblogs' => 0, 'favs' => 0, 'replies' => 0, 'url' => '', 'root' => 0]];
|
||||||
|
$result = $result_empty;
|
||||||
|
|
||||||
/* check if URL from $search exists in $toots */
|
/* check if URL from $search exists in $toots */
|
||||||
$id = array_keys(array_column($toots, 'url'), strtolower($search));
|
$id = array_keys(
|
||||||
|
array_filter(
|
||||||
|
array_column($toots, 'url'),
|
||||||
|
function ($value) use ($search) {
|
||||||
|
return (strpos($value, $search) !== false);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
if (empty($id)) {
|
if (empty($id)) {
|
||||||
debug("Blog URL \"$search\" has not been found");
|
debug("Blog URL \"$search\" has not been found");
|
||||||
} else {
|
} else {
|
||||||
@@ -202,6 +218,11 @@ if (empty($id)) {
|
|||||||
|
|
||||||
if ($cachebreak) {
|
if ($cachebreak) {
|
||||||
debug("Comments cache for $id outdated. Checking for new comments");
|
debug("Comments cache for $id outdated. Checking for new comments");
|
||||||
|
// delete old cache file, otherwise the stats would add up
|
||||||
|
delete_db($dbc, $id);
|
||||||
|
// re-create empty $result and new cache file
|
||||||
|
$result = $result_empty;
|
||||||
|
read_db($dbc, $result, $ctc, $cachebreak, $id);
|
||||||
/* Extract comments and stats from toot */
|
/* Extract comments and stats from toot */
|
||||||
tootContext($instance, $id, $result);
|
tootContext($instance, $id, $result);
|
||||||
tootStats($instance, $id, $result);
|
tootStats($instance, $id, $result);
|
||||||
|
|||||||
Reference in New Issue
Block a user