113 lines
3.7 KiB
PHP
113 lines
3.7 KiB
PHP
<?php
|
|
|
|
use App\Sparql;
|
|
use App\Helpers;
|
|
use Illuminate\Support\Facades\Route;
|
|
use Illuminate\Http\Request;
|
|
use Termwind\Components\Span;
|
|
|
|
|
|
Route::get('/', function () {
|
|
|
|
return view('index');
|
|
|
|
});
|
|
|
|
Route::get('list', function () {
|
|
|
|
$persons = Sparql::list();
|
|
return view('list', ['persons' => $persons]);
|
|
|
|
});
|
|
|
|
Route::get('list/p/{page}', function (int $page) {
|
|
|
|
$persons = Sparql::list($page);
|
|
return view('list', ['persons' => $persons, 'page' => $page]);
|
|
});
|
|
|
|
Route::get('graph', function () {
|
|
$ark = 'vx64bsvcfc5';
|
|
$parents = Sparql::parents($ark);
|
|
$children = Sparql::children_extended($ark);
|
|
$node = [];
|
|
foreach ($children as $child) {
|
|
$node[] = $child['ark_parent']['value'];
|
|
}
|
|
|
|
return view('graph', ['node' => array_unique($node)]);
|
|
});
|
|
|
|
|
|
Route::get('/person/ark:36599/{id}', function (string $id) {
|
|
|
|
$ark = "ark:36599/{$id}";
|
|
$basic = Sparql::person($ark);
|
|
$children = Sparql::children($id);
|
|
$parents = Sparql::parents($id);
|
|
$spouses = Sparql::spouses($id);
|
|
$partner = Sparql::lifePartner($id);
|
|
$siblings = Sparql::siblings($id);
|
|
$links = Sparql::children_extended($id);
|
|
$links = $links ? Helpers::buildTree($links, "ark:36599/{$id}") : null;
|
|
|
|
return view('person', ['ark' => $ark, 'basic' => $basic[0], 'children' => $children, 'parents' => $parents, 'spouses' => $spouses, 'partner' => $partner, 'siblings' => $siblings, 'links' => $links]);
|
|
});
|
|
|
|
Route::get('/search', function (Request $request) {
|
|
|
|
$term = $request->query('term') ?? '';
|
|
|
|
$hasDescendant = $request->query('hasDescendant') ?? false;
|
|
$birthYear = $request->query('birthYear') ?? false;
|
|
$birthMonth = $request->query('birthMonth') ?? false;
|
|
$birthDay = $request->query('birthDay') ?? false;
|
|
$deathYear = $request->query('deathYear') ?? false;
|
|
$deathMonth = $request->query('deathMonth') ?? false;
|
|
$deathDay = $request->query('deathDay') ?? false;
|
|
|
|
$options = [];
|
|
$options['hasDescendant'] = $hasDescendant;
|
|
$options['birthYear'] = $birthYear;
|
|
$options['birthMonth'] = $birthMonth;
|
|
$options['birthDay'] = $birthDay;
|
|
$options['deathYear'] = $deathYear;
|
|
$options['deathMonth'] = $deathMonth;
|
|
$options['deathDay'] = $deathDay;
|
|
|
|
$page = ($request->query('page') !== null && is_int(intval($request->query('page')))) || $request->query('page') !== null && intval($request->query('page')) === 0 ? $request->query('page') : 0;
|
|
|
|
$persons = Sparql::search($term, $options, $page);
|
|
|
|
if($persons && $term){
|
|
foreach ($persons as $key => $person) {
|
|
$persons[$key]['name']['value'] = preg_replace_callback(
|
|
"/{$term}/i",
|
|
fn($m) => "<mark>{$m[0]}</mark>",
|
|
$person['name']['value']);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return view('list', ['persons' => $persons, 'term' => $term]);
|
|
|
|
});
|
|
|
|
Route::get('/timeline', function (Request $request) {
|
|
|
|
// Get random dates for $from / $to if they are not defined or invalid.
|
|
$from = $request->query('from') && Helpers::dateValid($request->query('from')) ? $request->query('from') : date('Y-m-d', rand(-5364664448, -601347600));
|
|
$to = $request->query('to') && Helpers::dateValid($request->query('to')) ? $request->query('to') : date('Y-m-d', strtotime($from. ' +99 years'));
|
|
|
|
$page = ($request->query('page') !== null && is_int(intval($request->query('page')))) || $request->query('page') !== null && intval($request->query('page')) === 0 ? $request->query('page') : 0;
|
|
|
|
$persons = Sparql::filterByBirthdate($from, $to, $page);
|
|
$personsLen = $persons ? count($persons) : 0;
|
|
|
|
return view('timeline', ['persons' => $persons, 'from' => $from, 'to' => $to, 'len' => $personsLen, 'page' => $page]);
|
|
|
|
|
|
});
|
|
|