checkForCache(); if (! $cached) { $this->initCache(); return; } $cache = $this->getCached(); if (! $cache || ! isset($cache['count'])) { $this->error('Problem fetching cache'); return; } $this->updateAndCache(); Cache::forget('api:nodeinfo'); } protected function checkForCache() { return Storage::exists('total_local_posts.json'); } protected function initCache() { $res = [ 'count' => $this->getTotalLocalPosts(), ]; Storage::put('total_local_posts.json', json_encode($res, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); ConfigCacheService::put('instance.stats.total_local_posts', $res['count']); } protected function getCached() { return Storage::json('total_local_posts.json'); } protected function updateAndCache() { $res = [ 'count' => $this->getTotalLocalPosts(), ]; Storage::put('total_local_posts.json', json_encode($res, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); ConfigCacheService::put('instance.stats.total_local_posts', $res['count']); } protected function getTotalLocalPosts() { return DB::table('statuses') ->whereNull('deleted_at') ->where('local', true) ->whereNot('type', 'share') # Ignore boosts for the post count ->count(); } }