<?php

include "../cabeceras.php";
include "../../lib/sql.php";

/*
 *  Filtros:
 *      - [desde] {Entero} indica el paginado
 *      - [categoria] {Entero - opcional} solo para esa sección
 *
 *  Ejemplo:
 *      /api/v1/contenido?desde=1&categoria=70043
 */

if ( valid_params_or_die() ) {

    $data = array(
        'noticias' => getNoticias($_GET["desde"], $_GET["categoria"]),
        'publicidades' => getPublicidades($_GET["desde"]),
        'videos' => getVideos($_GET["desde"]),
        'paginado' => getPaginado($_GET["desde"]),
    );

    die(json_encode($data));
}

/*
 * Region de funciones
 */

function valid_params_or_die() {
    $errores = [];

    $desde=$_GET["desde"];
    if(strlen($desde)>10){ array_push($errores,'{"id":"0","parametro":"desde","mensaje":"Error en longitud del parametro"}'); }
    if(!is_numeric($desde)){ array_push($errores,'{"id":"1","parametro":"desde","mensaje":"Error en el tipo de parametro"}'); }
    if(!((int) $desde == $desde)){ array_push($errores,'{"id":"2","parametro":"desde","mensaje":"Error en el tipo de parametro debe ser entero"}') ;}
    if($desde<1){ array_push($errores,'{"id":"3","parametro":"desde","mensaje":"Error en el rango de parametro"}') ;}

    $categoria = $_GET["categoria"];
    if(!empty($categoria)){
        if(strlen($categoria)>15){ array_push($errores, '{"id":"0","parametro":"categoria","mensaje":"Error en longitud del parametro"}'); }
        if(!is_numeric($categoria)){ array_push($errores, '{"id":"1","parametro":"categoria","mensaje":"Error en el tipo de parametro"}'); }
        if(!((int) $categoria== $categoria)){ array_push($errores, '{"id":"2","parametro":"categoria","mensaje":"Error en el tipo de parametro debe ser entero"}'); }
        if($categoria<1){ array_push($errores, '{"id":"3","parametro":"categoria","mensaje":"Error en el rango de parametro"}'); }
    }

    if ($errores) {
        if ($_SERVER['REQUEST_METHOD'] == 'GET') {
            header("HTTP/1.0 405 Method Not Allowed");
        }
        die('{ "errores": [ '. join(',', $errores) .' ] }');
    }
    return true;
}

function getNoticias($desde, $categoria) {
    $CATIDAD = 10;

    $columnas = format_columns([
        'notas.ID'=>'id',
        'notas.titulo'=>'titulo',
        "replace(notas.bajada,'<br />','')"=>'bajada',
        "date_format(CONCAT(notas.a,'/',notas.m,'/',notas.d),'%d/%m/%Y')"=>'fecha',
        'CASE WHEN notas.html LIKE "" THEN notas.texto ELSE notas.html END'=>'texto_html',
        "CONCAT( CASE WHEN notas.m < 10 THEN '0' ELSE '' END, notas.m, '-', notas.a, '/resize_', notas.foto, notas.ext_img )"=>'url_imagen_principal',
        'categorias.nombre'=>'categoria',
    ]);
    
    $condiciones = '';
    if (!empty($categoria)) {
        $condiciones .= " AND notas.cat=$categoria";
    }
    
    return query("SELECT $columnas FROM notas INNER JOIN categorias ON notas.cat = categorias.ID 
        WHERE ver='si' $condiciones
        ORDER BY notas.destacado DESC, notas.ID DESC 
        LIMIT $CATIDAD OFFSET ". (($desde-1)*$CATIDAD));
        
}

function getPublicidades($desde) {
    if ($desde<1) return [];
    $columnas = format_columns([
        'id'=>'id',
        'CONCAT(carpetafoto, "/resize_", img, ".jpg")'=>'url_imagen_principal',
        'url'=>'url',
        'lugar'=>'lugar',
    ]);
    return query("SELECT $columnas FROM publicidades WHERE lugar>=10000000 AND lugar<10000500 AND id != '' order by home ASC, id DESC");
}

function getVideos($desde) {
    if ($desde>1) return [];
    $columnas = format_columns([
        'id'=>'id',
        'cat'=>'categoria',
        'titulo'=>'titulo',
        'bajada'=>'bajada',
        'video'=>'video',
    ]);
    return query("SELECT $columnas FROM videos_home WHERE home != '' order by home ASC, id DESC");
}

function getPaginado($desde) {
    return [
        'anterior'=>$desde > 1 ? $desde - 1 : null,
        'siguiente'=>$desde + 1,
    ];
}
