public function loadList() { if (!($posts = Redis::zrevrange(Key::posts($this->language), 0, -1, 'WITHSCORES'))) { if (!file_exists(base_path("resources/blog/{$this->language}"))) { return null; } $files = (new Filesystem())->allFiles(base_path("resources/blog/{$this->language}")); $files = array_map(function ($file) { $filename = explode('__', pathinfo($file, PATHINFO_FILENAME)); $date = count($filename) ? array_shift($filename) : ''; $date = \DateTime::createFromFormat('Y-m-d', $date) ?: new \DateTime(); $slug = array_shift($filename); return ['path' => $file->getRealPath(), 'slug' => $slug, 'published' => $date->setTime(9, 0, 0), 'extension' => pathinfo($file, PATHINFO_EXTENSION)]; }, $files); $loaded = []; foreach ($files as $file) { if ($file['slug'] and $file['extension'] == 'md') { $loaded[$file['slug']] = $file; Redis::zadd(Key::posts($this->language), $file['published']->getTimestamp(), serialize($file)); } } return $loaded; } return static::convert($posts); }
public function latest($latest = 4) { $posts = PostLoader::convert(Redis::zrevrange(Key::posts(), 0, $latest - 1, 'WITHSCORES')); foreach ($posts as $slug => &$post) { $post = $this->loader->load($slug); } return $posts; }
/** * Function remove all redis data for specified language * * @param $language */ public function clear($language) { if (Redis::del(Key::posts($language))) { $this->info('Remove all entries for key ' . Key::posts($language)); } if (Redis::del(Key::tags($language))) { $this->info('Remove all entries for key ' . Key::tags($language)); } foreach (Redis::keys(Key::post('*', $language)) as $key) { if (Redis::del($key)) { $this->info('Remove all entries for keys ' . $key); } } }