This commit is contained in:
shibafu 2019-01-15 00:05:01 +09:00
parent a2f797cbbe
commit faf0755ebd
44 changed files with 87 additions and 68 deletions

View File

@ -30,6 +30,8 @@ class Ejaculation extends Model
public function textTags() public function textTags()
{ {
return implode(' ', $this->tags->map(function ($v) { return $v->name; })->all()); return implode(' ', $this->tags->map(function ($v) {
return $v->name;
})->all());
} }
} }

View File

@ -2,9 +2,9 @@
namespace App\Events; namespace App\Events;
use Illuminate\Queue\SerializesModels;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class LinkDiscovered class LinkDiscovered
{ {

View File

@ -2,10 +2,10 @@
namespace App\Http\Controllers\Auth; namespace App\Http\Controllers\Auth;
use App\User;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator; use App\User;
use Illuminate\Foundation\Auth\RegistersUsers; use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Validator;
class RegisterController extends Controller class RegisterController extends Controller
{ {
@ -58,7 +58,9 @@ class RegisterController extends Controller
$rules['g-recaptcha-response'] = 'required|captcha'; $rules['g-recaptcha-response'] = 'required|captcha';
} }
return Validator::make($data, $rules, return Validator::make(
$data,
$rules,
['name.regex' => 'ユーザー名には半角英数字とアンダーバー、ハイフンのみ使用できます。'], ['name.regex' => 'ユーザー名には半角英数字とアンダーバー、ハイフンのみ使用できます。'],
['name' => 'ユーザー名'] ['name' => 'ユーザー名']
); );

View File

@ -2,10 +2,10 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController class Controller extends BaseController
{ {

View File

@ -2,14 +2,14 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Ejaculation;
use App\Events\LinkDiscovered; use App\Events\LinkDiscovered;
use App\Tag; use App\Tag;
use App\User; use App\User;
use Carbon\Carbon; use Carbon\Carbon;
use Validator;
use App\Ejaculation;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Validator;
class EjaculationController extends Controller class EjaculationController extends Controller
{ {
@ -104,6 +104,7 @@ class EjaculationController extends Controller
public function edit($id) public function edit($id)
{ {
$ejaculation = Ejaculation::findOrFail($id); $ejaculation = Ejaculation::findOrFail($id);
return view('ejaculation.edit')->with(compact('ejaculation')); return view('ejaculation.edit')->with(compact('ejaculation'));
} }
@ -166,6 +167,7 @@ class EjaculationController extends Controller
$user = User::findOrFail($ejaculation->user_id); $user = User::findOrFail($ejaculation->user_id);
$ejaculation->tags()->detach(); $ejaculation->tags()->detach();
$ejaculation->delete(); $ejaculation->delete();
return redirect()->route('user.profile', ['name' => $user->name])->with('status', '削除しました。'); return redirect()->route('user.profile', ['name' => $user->name])->with('status', '削除しました。');
} }
} }

View File

@ -14,6 +14,7 @@ class InfoController extends Controller
->orderByDesc('pinned') ->orderByDesc('pinned')
->orderByDesc('created_at') ->orderByDesc('created_at')
->paginate(20); ->paginate(20);
return view('info.index')->with([ return view('info.index')->with([
'informations' => $informations, 'informations' => $informations,
'categories' => Information::CATEGORIES 'categories' => Information::CATEGORIES
@ -23,6 +24,7 @@ class InfoController extends Controller
public function show($id) public function show($id)
{ {
$information = Information::findOrFail($id); $information = Information::findOrFail($id);
return view('info.show')->with([ return view('info.show')->with([
'info' => $information, 'info' => $information,
'category' => Information::CATEGORIES[$information->category] 'category' => Information::CATEGORIES[$information->category]

View File

@ -21,7 +21,8 @@ class UserController extends Controller
} }
// チェックインの取得 // チェックインの取得
$query = Ejaculation::select(DB::raw(<<<'SQL' $query = Ejaculation::select(DB::raw(
<<<'SQL'
id, id,
ejaculated_date, ejaculated_date,
note, note,
@ -63,7 +64,8 @@ SQL
abort(404); abort(404);
} }
$groupByDay = Ejaculation::select(DB::raw(<<<'SQL' $groupByDay = Ejaculation::select(DB::raw(
<<<'SQL'
to_char(ejaculated_date, 'YYYY/MM/DD') AS "date", to_char(ejaculated_date, 'YYYY/MM/DD') AS "date",
count(*) AS "count" count(*) AS "count"
SQL SQL
@ -73,7 +75,8 @@ SQL
->orderBy(DB::raw("to_char(ejaculated_date, 'YYYY/MM/DD')")) ->orderBy(DB::raw("to_char(ejaculated_date, 'YYYY/MM/DD')"))
->get(); ->get();
$groupByHour = Ejaculation::select(DB::raw(<<<'SQL' $groupByHour = Ejaculation::select(DB::raw(
<<<'SQL'
to_char(ejaculated_date, 'HH24') AS "hour", to_char(ejaculated_date, 'HH24') AS "hour",
count(*) AS "count" count(*) AS "count"
SQL SQL
@ -133,7 +136,8 @@ SQL
} }
// チェックインの取得 // チェックインの取得
$query = Ejaculation::select(DB::raw(<<<'SQL' $query = Ejaculation::select(DB::raw(
<<<'SQL'
id, id,
ejaculated_date, ejaculated_date,
note, note,

View File

@ -7,8 +7,8 @@ use App\Metadata;
use App\MetadataResolver\MetadataResolver; use App\MetadataResolver\MetadataResolver;
use App\Utilities\Formatter; use App\Utilities\Formatter;
use GuzzleHttp\Exception\TransferException; use GuzzleHttp\Exception\TransferException;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
class LinkCollector class LinkCollector

View File

@ -12,6 +12,7 @@ class DLsiteResolver implements Resolver
$ogpResolver = new OGPResolver(); $ogpResolver = new OGPResolver();
$metadata = $ogpResolver->parse($res->getBody()); $metadata = $ogpResolver->parse($res->getBody());
$metadata->image = str_replace("img_sam.jpg", "img_main.jpg", $metadata->image); $metadata->image = str_replace("img_sam.jpg", "img_main.jpg", $metadata->image);
return $metadata; return $metadata;
} else { } else {
throw new \RuntimeException("{$res->getStatusCode()}: $url"); throw new \RuntimeException("{$res->getStatusCode()}: $url");

View File

@ -25,7 +25,7 @@ class FantiaResolver implements Resolver
$ogpUrl = $node->getAttribute('content'); $ogpUrl = $node->getAttribute('content');
// 投稿に画像がない場合ogp.jpgでない場合のみ大きい画像に変換する // 投稿に画像がない場合ogp.jpgでない場合のみ大きい画像に変換する
if($ogpUrl != "http://fantia.jp/images/ogp.jpg"){ if ($ogpUrl != "http://fantia.jp/images/ogp.jpg") {
preg_match("~https://fantia\.s3\.amazonaws\.com/uploads/post/file/{$postId}/ogp_(.*?)\.(jpg|png)~", $ogpUrl, $match); preg_match("~https://fantia\.s3\.amazonaws\.com/uploads/post/file/{$postId}/ogp_(.*?)\.(jpg|png)~", $ogpUrl, $match);
$uuid = $match[1]; $uuid = $match[1];
$extension = $match[2]; $extension = $match[2];

View File

@ -21,7 +21,8 @@ class MetadataResolver implements Resolver
{ {
foreach ($this->rules as $pattern => $class) { foreach ($this->rules as $pattern => $class) {
if (preg_match($pattern, $url) === 1) { if (preg_match($pattern, $url) === 1) {
$resolver = new $class; $resolver = new $class();
return $resolver->resolve($url); return $resolver->resolve($url);
} }
} }

View File

@ -41,6 +41,7 @@ class OGPResolver implements Resolver
} }
} }
} }
return ''; return '';
} }
} }

View File

@ -4,17 +4,17 @@ namespace App\MetadataResolver;
class PixivResolver implements Resolver class PixivResolver implements Resolver
{ {
/** /**
* サムネイル画像 URL から最大長辺 1200px の画像 URL に変換する * サムネイル画像 URL から最大長辺 1200px の画像 URL に変換する
* *
* @param string $thumbnailUrl サムネイル画像 URL * @param string $thumbnailUrl サムネイル画像 URL
* @return string 1200px の画像 URL * @return string 1200px の画像 URL
*/ */
public function thumbnailToMasterUrl(string $thumbnailUrl):string public function thumbnailToMasterUrl(string $thumbnailUrl): string
{ {
$temp = str_replace("/c/128x128", "", $thumbnailUrl); $temp = str_replace("/c/128x128", "", $thumbnailUrl);
$largeUrl = str_replace("square1200.jpg", "master1200.jpg", $temp); $largeUrl = str_replace("square1200.jpg", "master1200.jpg", $temp);
return $largeUrl; return $largeUrl;
} }
@ -25,7 +25,7 @@ class PixivResolver implements Resolver
* @param string $pixivUrl i.pximg URL * @param string $pixivUrl i.pximg URL
* @return string i.pixiv.cat URL * @return string i.pixiv.cat URL
*/ */
public function proxize(string $pixivUrl):string public function proxize(string $pixivUrl): string
{ {
return str_replace("i.pximg.net", "i.pixiv.cat", $pixivUrl); return str_replace("i.pximg.net", "i.pixiv.cat", $pixivUrl);
} }

View File

@ -14,6 +14,7 @@ class ToranoanaResolver implements Resolver
$res = $client->get($url, ['cookies' => $cookieJar]); $res = $client->get($url, ['cookies' => $cookieJar]);
if ($res->getStatusCode() === 200) { if ($res->getStatusCode() === 200) {
$ogpResolver = new OGPResolver(); $ogpResolver = new OGPResolver();
return $ogpResolver->parse($res->getBody()); return $ogpResolver->parse($res->getBody());
} else { } else {
throw new \RuntimeException("{$res->getStatusCode()}: $url"); throw new \RuntimeException("{$res->getStatusCode()}: $url");

View File

@ -2,8 +2,8 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
class AuthServiceProvider extends ServiceProvider class AuthServiceProvider extends ServiceProvider
{ {

View File

@ -2,8 +2,8 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Broadcast; use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;
class BroadcastServiceProvider extends ServiceProvider class BroadcastServiceProvider extends ServiceProvider
{ {

View File

@ -2,8 +2,8 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
class EventServiceProvider extends ServiceProvider class EventServiceProvider extends ServiceProvider
{ {

View File

@ -2,8 +2,8 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider class RouteServiceProvider extends ServiceProvider
{ {

View File

@ -2,8 +2,8 @@
namespace App; namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
class User extends Authenticatable class User extends Authenticatable
@ -36,9 +36,10 @@ class User extends Authenticatable
* @param int $size 画像サイズ * @param int $size 画像サイズ
* @return string Gravatar 画像URL * @return string Gravatar 画像URL
*/ */
public function getProfileImageUrl($size = 30) : string public function getProfileImageUrl($size = 30): string
{ {
$hash = md5(strtolower(trim($this->email))); $hash = md5(strtolower(trim($this->email)));
return '//www.gravatar.com/avatar/' . $hash . '?s=' . $size; return '//www.gravatar.com/avatar/' . $hash . '?s=' . $size;
} }

View File

@ -24,6 +24,7 @@ class Formatter
$days = floor($value / 86400); $days = floor($value / 86400);
$hours = floor($value % 86400 / 3600); $hours = floor($value % 86400 / 3600);
$minutes = floor($value % 3600 / 60); $minutes = floor($value % 3600 / 60);
return "{$days}{$hours}時間 {$minutes}"; return "{$days}{$hours}時間 {$minutes}";
} }

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration class CreateUsersTable extends Migration
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePasswordResetsTable extends Migration class CreatePasswordResetsTable extends Migration
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateEjaculationsTable extends Migration class CreateEjaculationsTable extends Migration
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateInformationTable extends Migration class CreateInformationTable extends Migration
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddLinkToEjaculations extends Migration class AddLinkToEjaculations extends Migration
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTagsTable extends Migration class CreateTagsTable extends Migration
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateMetadataTable extends Migration class CreateMetadataTable extends Migration
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class RecreateMetadataTable extends Migration class RecreateMetadataTable extends Migration
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class ChangeLinkOnEjaculations extends Migration class ChangeLinkOnEjaculations extends Migration
{ {

View File

@ -40,5 +40,6 @@ Route::get('/checkin/card', function (Request $request, MetadataResolver $resolv
if (!config('app.debug')) { if (!config('app.debug')) {
$response = $response->setCache(['public' => true, 'max_age' => 86400]); $response = $response->setCache(['public' => true, 'max_age' => 86400]);
} }
return $response; return $response;
}); });

View File

@ -15,7 +15,7 @@ Auth::routes();
Route::get('/', 'HomeController@index')->name('home'); Route::get('/', 'HomeController@index')->name('home');
Route::get('/user', function() { Route::get('/user', function () {
return redirect()->route('user.profile', ['name' => Auth::user()->name]); return redirect()->route('user.profile', ['name' => Auth::user()->name]);
})->middleware('auth')->name('user.profile'); })->middleware('auth')->name('user.profile');
Route::get('/user/{name?}', 'UserController@profile')->name('user.profile'); Route::get('/user/{name?}', 'UserController@profile')->name('user.profile');

View File

@ -2,10 +2,10 @@
namespace Tests\Feature; namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions; use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Tests\TestCase;
class ExampleTest extends TestCase class ExampleTest extends TestCase
{ {

View File

@ -2,9 +2,9 @@
namespace Tests\Unit; namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions; use Illuminate\Foundation\Testing\DatabaseTransactions;
use Tests\TestCase;
class ExampleTest extends TestCase class ExampleTest extends TestCase
{ {