get('folders.data'), 'segmentos.json' ]); $segmentos = json_decode(trim(file_get_contents($filename))); return $view->render($response, 'proyectos.list', compact('segmentos')); } public function show(Request $request, Response $response, Container $container, View $view, $proyecto): Response { $filename = implode(DIRECTORY_SEPARATOR, [ $container->get('folders.data'), 'proyectos.json' ]); $proyectos = json_decode(trim(file_get_contents($filename))); $filename = implode(DIRECTORY_SEPARATOR, [ $container->get('folders.data'), 'destacados.json' ]); $destacados = json_decode(trim(file_get_contents($filename))); $destacado = false; if (array_search($proyecto, $destacados) !== false) { $destacado = true; } $id = $proyecto; $proyecto = $proyectos[$proyecto]; $proyecto->destacado = $destacado; $proyecto->id = $id; $folder = implode(DIRECTORY_SEPARATOR, [ $container->get('folders.public'), 'assets', 'images', mb_strtolower($proyecto->edificio) ]); $files = new \DirectoryIterator($folder); $proyecto->images = []; foreach ($files as $file) { if ($file->isDir()) { continue; } $proyecto->images []= $file->getFilename(); } return $view->render($response, 'proyectos.show', compact('proyecto')); } public function segmento(Request $request, Response $response, Container $container, $segmento): Response { $filename = implode(DIRECTORY_SEPARATOR, [ $container->get('folders.data'), 'proyectos.json' ]); $proyectos = json_decode(trim(file_get_contents($filename))); if ($segmento != 'todo') { $proyectos = array_filter($proyectos, function($item) use ($segmento) { return (str_replace(' ', '_', mb_strtolower($item->segmento)) == $segmento); }); } $output = [ 'information' => [ 'segmento' => $segmento ], 'proyectos' => array_keys($proyectos) ]; $response->getBody()->write(json_encode($output)); return $response ->withHeader('Content-Type', 'application/json') ->withStatus(201); } public function destacados(Request $request, Response $response, Container $container, $page): Response { $filename = implode(DIRECTORY_SEPARATOR, [ $container->get('folders.data'), 'destacados.json' ]); $destacados = json_decode(trim(file_get_contents($filename))); $max = ceil(count($destacados) / 4); $output = [ 'information' => [ 'page' => $page ], 'destacados' => [] ]; for ($i = ($page - 1) * 4; $i < $page * 4; $i ++) { $output['destacados'] []= $destacados[$i]; } $response->getBody()->write(json_encode($output)); return $response ->withHeader('Content-Type', 'application/json') ->withStatus(201); } public function ficha(Request $request, Response $response, Container $container, View $view, $proyecto): Response { $filename = implode(DIRECTORY_SEPARATOR, [ $container->get('folders.data'), 'proyectos.json' ]); $proyectos = json_decode(trim(file_get_contents($filename))); $filename = implode(DIRECTORY_SEPARATOR, [ $container->get('folders.data'), 'destacados.json' ]); $destacados = json_decode(trim(file_get_contents($filename))); $destacado = false; if (array_search($proyecto, $destacados) !== false) { $destacado = true; } $id = $proyecto; $proyecto = $proyectos[$proyecto]; $proyecto->destacado = $destacado; $proyecto->id = $id; return $view->render($response, 'proyectos.ficha', compact('proyecto')); } }