|
|
@@ -4,6 +4,7 @@ namespace App\Knockout; |
|
|
|
|
|
|
|
use App\Helper\BBCode; |
|
|
|
use Carbon\Carbon; |
|
|
|
use Illuminate\Support\Facades\Cache; |
|
|
|
|
|
|
|
class Post { |
|
|
|
|
|
|
@@ -37,6 +38,35 @@ class Post { |
|
|
|
return $s; |
|
|
|
} |
|
|
|
|
|
|
|
private static function requestAll(int $userId, int $page = 1): Dataset |
|
|
|
{ |
|
|
|
$data = (new AbstractData)->httpGet(sprintf('/user/%u/posts/%u', $userId, $page)); |
|
|
|
$json = json_decode($data); |
|
|
|
$records = array_map(function($user) { |
|
|
|
return self::unwrap($user); |
|
|
|
}, $json->posts); |
|
|
|
return (new Dataset($records)) |
|
|
|
->setTotalRecords($json->totalPosts) |
|
|
|
->setCurrentPage($page) |
|
|
|
->setRecordsPerPage(40); |
|
|
|
} |
|
|
|
|
|
|
|
public static function updateAll(int $userId, int $page = 0): Dataset |
|
|
|
{ |
|
|
|
$key = sprintf('user-posts-%u-%u', $userId, $page); |
|
|
|
$data = self::requestAll($userId, $page); |
|
|
|
Cache::put($key, $data, 300); |
|
|
|
return $data; |
|
|
|
} |
|
|
|
|
|
|
|
public static function all(int $userId, int $page = 0): Dataset |
|
|
|
{ |
|
|
|
$key = sprintf('user-posts-%u-%u', $userId, $page); |
|
|
|
return Cache::get($key, function() use($userId, $page) { |
|
|
|
return self::updateAll($userId, $page); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public function dateDiff() |
|
|
|
{ |
|
|
|
return Carbon::createFromFormat('d/m/Y H:i', $this->date)->diffForHumans(); |
|
|
|