2020-04-10 06:35:55 +03:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Commands;
|
|
|
|
|
|
|
|
use LaravelZero\Framework\Commands\Command;
|
|
|
|
use Log;
|
|
|
|
use App\Models\Game;
|
2020-05-04 20:21:36 +03:00
|
|
|
use App\Models\Language;
|
2020-04-10 06:35:55 +03:00
|
|
|
|
|
|
|
class Freshlist extends Command
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* The signature of the command.
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $signature = 'freshlist {keyword?}';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The description of the command.
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $description = 'Print new games';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Execute the console command.
|
|
|
|
*
|
|
|
|
* @return mixed
|
|
|
|
*/
|
|
|
|
public function handle()
|
|
|
|
{
|
|
|
|
$now = date('Y-m-d');
|
2020-09-18 08:45:32 +03:00
|
|
|
$week_ago = date('Y-m-d 00:00:00', strtotime('1 week ago'));
|
2020-10-21 07:48:00 +03:00
|
|
|
$games = Game::with(['authors', 'tags'])
|
2020-04-10 06:35:55 +03:00
|
|
|
->where('release_date', '<=', $now)
|
|
|
|
->where('release_date', '>', $week_ago)
|
|
|
|
->orderBy('source')
|
|
|
|
->get();
|
2020-05-04 20:21:36 +03:00
|
|
|
|
|
|
|
$gamebooks = [];
|
|
|
|
$quests_ru = [];
|
|
|
|
$quests_en = [];
|
|
|
|
$visualnovels = [];
|
|
|
|
$ru = Language::findByCode('ru');
|
2020-04-10 06:35:55 +03:00
|
|
|
foreach ($games as $game) {
|
2020-10-21 07:48:00 +03:00
|
|
|
$tags = $game->tags->pluck('title',' id')->toArray();
|
|
|
|
$tags = array_values($tags);
|
|
|
|
$tags = array_map('strtolower', $tags);
|
|
|
|
if (array_intersect([
|
|
|
|
'adult',
|
|
|
|
'xxx',
|
|
|
|
'18+',
|
|
|
|
'porn',
|
|
|
|
'porngame',
|
|
|
|
'pointnclick',
|
|
|
|
'lewd',
|
|
|
|
'erotic',
|
|
|
|
'nsfw',
|
|
|
|
'bitsy',
|
|
|
|
'vr',
|
|
|
|
], $tags) !== []) {
|
|
|
|
continue;
|
|
|
|
}
|
2020-05-04 20:21:36 +03:00
|
|
|
if (strpos($game->title, 'PDF') !== false) {
|
|
|
|
$gamebooks[] = $game;
|
2020-04-10 06:35:55 +03:00
|
|
|
}
|
2020-05-04 20:21:36 +03:00
|
|
|
else if ($game->source === 'Anivisual') {
|
|
|
|
$visualnovels[] = $game;
|
|
|
|
} else if ($game->languages->where('id', $ru->id)->first()) {
|
|
|
|
$quests_ru[] = $game;
|
|
|
|
} else {
|
|
|
|
if (empty($quests_en[$game->source])) {
|
|
|
|
$quests_en[$game->source] = [];
|
|
|
|
}
|
|
|
|
$quests_en[$game->source][] = $game;
|
2020-04-10 06:35:55 +03:00
|
|
|
}
|
2020-05-04 20:21:36 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (!empty($gamebooks)) {
|
|
|
|
$this->printList('Книги-игры', $gamebooks);
|
|
|
|
}
|
|
|
|
if (!empty($visualnovels)) {
|
|
|
|
$this->printList('Визуальные новеллы', $visualnovels);
|
|
|
|
}
|
|
|
|
if (!empty($quests_ru)) {
|
|
|
|
$this->printList('Текстовые квесты', $quests_ru);
|
|
|
|
}
|
|
|
|
if (!empty($quests_en)) {
|
|
|
|
foreach ($quests_en as $source => $list) {
|
|
|
|
$this->printSpoiler($source, $list);
|
2020-04-10 06:35:55 +03:00
|
|
|
}
|
|
|
|
}
|
2020-05-04 20:21:36 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
protected function printSpoiler($title, $list) {
|
|
|
|
echo '<spoiler title="'.$title.'">';
|
|
|
|
$this->printList($title, $list);
|
|
|
|
echo '</spoiler>';
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function printList($title, $list) {
|
|
|
|
echo '<h4>'.$title.'</h4><ul>';
|
|
|
|
foreach ($list as $game) {
|
|
|
|
$this->printGame($game);
|
|
|
|
}
|
|
|
|
echo '</ul>'.PHP_EOL;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function printGame($game) {
|
|
|
|
echo '<li>';
|
|
|
|
$authors = $game->authors->toArray();
|
|
|
|
if (!empty($authors)) {
|
|
|
|
echo '<em>';
|
|
|
|
echo implode(', ', array_map(function($model) {
|
|
|
|
return trim($model['name']);
|
|
|
|
}, $authors));
|
|
|
|
echo '</em> — ';
|
|
|
|
}
|
|
|
|
echo "<a rel='nofollow' target='_blank' href='".trim($game->url)."'>«".htmlentities(trim($game->title))."»</a>";
|
|
|
|
$description = $game->short_description;
|
|
|
|
if (empty($description)) {
|
|
|
|
$description = $game->description;
|
|
|
|
}
|
|
|
|
if (!empty($description)) {
|
|
|
|
echo PHP_EOL.'<blockquote>'.$game->normalizeDescription($description).'</blockquote>';
|
|
|
|
}
|
|
|
|
echo '</li>'.PHP_EOL;
|
2020-04-10 06:35:55 +03:00
|
|
|
}
|
2020-05-03 09:44:18 +03:00
|
|
|
|
2020-04-10 06:35:55 +03:00
|
|
|
}
|