<?php
/*
* Para revisar se documenta el siguiente
*/
ob_start("ob_gzhandler");
function utf8_encode_array(&$array) {
if (is_array($array)) {
array_walk($array, 'utf8_encode_array');
} else {
$array = utf8_encode($array);
}
return $array;
}
/**
*
* Incluimos header antes que nada, o si no no jala el einfluss!
*
*/
include_once(dirname(__FILE__) . "/config.inc.php");
include_once("json2.php");
include_once("GEE/loader.php");
$GEE->loadModule('Modelo');
$json = new Services_JSON();
$error = false;
$mysqli = new mysqli($DBhost, $DBuser, $DBpassword, $DBbase);
$mysqli->set_charset('utf8');
if (mysqli_connect_errno()) {
$error = true;
}
if (!empty($_GET)) {
$post = $_GET;
$modelo = $post['condiciones']['modelo'];
$condicion = array();
$condicion2 = array();
if ($modelo == 'Media') {
$condicion = array(
'tipo' => array(
'campo' => 'tipo',
'valor' => 1,
'tipo' => 'numero',
'condicion' => '='
)
);
}
if ($modelo == 'Documentos') {
$modelo = 'Media';
$condicion = array(
'tipo' => array(
'campo' => 'tipo',
'valor' => 4,
'tipo' => 'numero',
'condicion' => '='
)
);
}
if ($modelo == 'Video') {
$modelo = 'Media';
$condicion = array(
'tipo' => array(
'campo' => 'tipo',
'valor' => 2,
'tipo' => 'numero',
'condicion' => '='
)
);
}
/*
* Omitir los campos que no estan en la tabla
*/
if ($modelo != 'Video' && $modelo != 'Media' && $modelo != 'Documentos' && $modelo != 'Tags') {
$condicion = array(
'tipo' => array(
'campo' => 'estatus',
'valor' => 2,
'tipo' => 'numero',
'condicion' => '='
)
);
}
/*
* Agregar el modelo y la condicions
*/
if ($modelo == 'Tags') {
$modelo = 'Tags';
$condicion = array();
$condicion2 = array(
'OR' =>
array(
'nombre' => array(
'campo' => 'titulo',
'valor' => $post['condiciones']['text'],
'tipo' => 'texto',
'condicion' => '%'
)
)
);
}
if ($modelo == 'Revistas') {
$modelo = 'Revista';
$condicion = array();
$condicion2 = array(
'OR' =>
array(
'nombre' => array(
'campo' => 'titulo',
'valor' => $post['condiciones']['text'],
'tipo' => 'texto',
'condicion' => '%'
)
)
);
}
if ($modelo == 'Noticias' || $modelo == 'Galerias' || $modelo == 'Next' || $modelo == 'Especiales') {
$condicion2 = array(
'OR' =>
array(
'temp_titulo' => array(
'campo' => 'titulo',
'valor' => $post['condiciones']['text'],
'tipo' => 'texto',
'condicion' => '%'
),
'temp_descripcion' => array(
'campo' => 'descripcion',
'valor' => $post['condiciones']['text'],
'tipo' => 'texto',
'condicion' => '%'
),
'temp_titulo_alt' => array(
'campo' => 'titulo_alt',
'valor' => $post['condiciones']['text'],
'tipo' => 'texto',
'condicion' => '%'
),
'temp_descripcion_alt' => array(
'campo' => 'descripcion_alt',
'valor' => $post['condiciones']['text'],
'tipo' => 'texto',
'condicion' => '%'
),
'temp_autor' => array(
'campo' => 'autor',
'valor' => $post['condiciones']['text'],
'tipo' => 'texto',
'condicion' => '%'
)
)
);
} elseif ($modelo == 'Encuestas') {
$condicion2 = array(
'OR' =>
array(
'temp_pregunta' => array(
'campo' => 'pregunta',
'valor' => $post['condiciones']['text'],
'tipo' => 'texto',
'condicion' => '%'
),
'temp_opciones' => array(
'campo' => 'opciones',
'valor' => $post['condiciones']['text'],
'tipo' => 'texto',
'condicion' => '%'
)
)
);
} else {
$condicion2 = array(
'OR' =>
array(
'temp_titulo' => array(
'campo' => 'titulo',
'valor' => $post['condiciones']['text'],
'tipo' => 'texto',
'condicion' => '%'
),
'temp_descripcion' => array(
'campo' => 'descripcion',
'valor' => $post['condiciones']['text'],
'tipo' => 'texto',
'condicion' => '%'
)
)
);
}
$condiciones = array_merge($condicion, $condicion2);
$GEE->Modelo->loadModelo($modelo);
$GEE->Modelo->loadModelo("Canales");
$campo_id = $GEE->{$modelo}->id_campo;
$rango = 1;
if (isset($post['condiciones']['fecha_if']) && $post['condiciones']['fecha_if'] == 'true') {
$rango = 0;
} else {
$rango = 1;
}
if ($rango == 0) {
$desde = $post['condiciones']['fecha_desde'];
$hasta = $post['condiciones']['fecha_hasta'];
} else {
$desde = '0000-00-00';
$hasta = date('Y-m-d');
}
if ($modelo != 'Tags') {
$objeto = array(
'campos' => array(
$campo_id,
'titulo',
'titulo_alt',
'descripcion',
'descripcion_alt',
'fecha_efectiva',
'link_permanente',
'id_canal',
'autor',
'contenido'
),
'titulo_columnas' => array(
$campo_id => 'ID',
'titulo' => 'Titulo',
'descripcion' => 'Descripción',
'fecha_efectiva' => 'Fecha efectiva',
'link_permanente' => 'Link'
),
'campos_busqueda' => array(
'titulo',
'descripcion',
'categoria'
),
'condiciones' => array('busca' => $post['condiciones']['text'],
'allwords' => 1,
'rango' => $rango,
'desde' => $desde,
'hasta' => $hasta,
'campo' => 'fecha_efectiva',
'orden' => 'DESC',
'canal' => @$post['condiciones']['canal'],
'subseccion' => 'Reporte'
),
'condiciones_some' => $condiciones,
'paginado' => array(
'pagina' => $post['pagina'],
'limite' => $post['condiciones']['limite'],
),
'devueltos' => array(),
'modo' => 1
);
}
if ($modelo == 'Encuestas') {
$objeto['campos'] = array(
$campo_id,
'pregunta',
'opciones',
'fecha_caducidad',
'link'
);
$objeto['campos_busqueda'] = array(
'pregunta',
'opciones'
);
}
if ($modelo == 'Infografias') {
$objeto['campos'] = array(
$campo_id,
'titulo',
'descripcion',
'fecha_efectiva',
'link_permanente',
'swf'
);
$objeto['campos_busqueda'] = array(
'titulo',
'descripcion'
);
}
/*
* Se genera la estructura de la tabla como array
*/
if ($modelo == 'Tags') {
$objeto['campos'] = array(
$campo_id,
'titulo',
'metodo'
);
$objeto['titulo_columnas'] = array(
$campo_id => 'ID',
'titulo' => 'Titulo',
'metodo' => 'Metodo',
);
$objeto['campos_busqueda'] = array(
$campo_id,
'titulo',
'metodo'
);
$objeto['paginado'] = array(
'pagina' => $post['pagina'],
'limite' => $post['condiciones']['limite'],
);
$objeto['condiciones'] = array('busca' => $post['condiciones']['text'],
'allwords' => 1,
'campo' => 'titulo',
'orden' => 'ASC',
'valor' => 1,
'condicion' => '%'
);
$objeto['devueltos'] = array('titulo', 'metodo');
/*
$objeto['condiciones_some'] =array( 'busca' => $post['condiciones']['text'],
'allwords' => 1,
'campo' => 'titulo',
'orden'=> 'ASC',
'valor' => 1
);
*
*/
}
if ($modelo == 'Media') {
$objeto['campos'] = array(
$campo_id,
'titulo',
'descripcion',
'fecha_efectiva',
'link_permanente',
'referencia',
'lugar',
'credito'
);
$objeto['campos_busqueda'] = array(
'titulo',
'descripcion'
);
}
if ($modelo == 'Revista') {
$objeto['campos'] = array(
$campo_id,
'titulo',
'descripcion',
'edicion',
'link',
'imagen'
);
$objeto['condiciones']['campo'] = 'fecha_modificacion';
$objeto['campos_busqueda'] = array(
'titulo',
'descripcion'
);
}
if ($post['condiciones']['modelo'] == 'Video') {
$objeto['campos'] = array(
$campo_id,
'titulo',
'descripcion',
'fecha_efectiva',
'link_permanente',
'referencia',
'referencia_mov'
);
}
$results = $GEE->{$modelo}->Buscador()->get_resultado($objeto);
$ids = array();
foreach ($results->resultados as $key_campos => $value_campos) {
$ids[] = $value_campos[$campo_id];
}
if ($modelo != 'Tags') {
$extendidos = $GEE->{$modelo}->Buscador()->busqueda_extendida($ids, $post['condiciones']['modelo']);
}
//exit();
if ($modelo == 'Next') {
$relacionados_next = $GEE->{$modelo}->Buscador()->busqueda_relacionados_next($ids);
$imagenes_next = $GEE->{$modelo}->Buscador()->busqueda_imagenes_next($ids);
}
foreach ($results->resultados as $key_campo => $val_campo) {
if ($modelo == 'Encuestas') {
$val_campo['titulo'] = $val_campo['pregunta'];
$val_campo['descripcion'] = $val_campo['opciones'];
}
if ($modelo != 'Tags') {
$val_campo['titulo'] = !empty($val_campo['titulo_alt']) ? $val_campo['titulo_alt'] : $val_campo['titulo'];
$val_campo['descripcion'] = !empty($val_campo['descripcion']) ? $val_campo['descripcion'] : $val_campo['descripcion'];
}
if ($modelo == 'Infografias') {
$val_campo['imagen'] = '';
}
if ($modelo != 'Tags' && $modelo != 'Infografias' && $modelo != 'Revista') {
$val_campo['imagen'] = $extendidos['imagen'][$val_campo[$campo_id]]['imagen'];
$val_campo['credito_imagen'] = $extendidos['credito_imagen'][$val_campo[$campo_id]]['credito_imagen'];
$val_campo['video'] = $extendidos['video'][$val_campo[$campo_id]]['video'];
if (!empty($val_campo['lugar']))
$val_campo['lugar'] = !empty($val_campo['lugar']) ? $val_campo['lugar'] : $val_campo['lugar'];
$val_campo['videothumb'] = $extendidos['video'][$val_campo[$campo_id]]['videothumb'];
}
if ($modelo == 'Next') {
$val_campo['link_permanente'] = (isset($relacionados_next[$val_campo[$campo_id]]['url'])) ? $relacionados_next[$val_campo[$campo_id]]['url'] : '';
$val_campo['imagen'] = (isset($imagenes_next[$val_campo[$campo_id]]['imagen'])) ? $imagenes_next[$val_campo[$campo_id]]['imagen'] : '';
}
if ($post['condiciones']['modelo'] == 'Video') {
$val_campo['video'] = $val_campo['referencia'];
$val_campo['videothumb'] = $val_campo['referencia_mov'];
unset($val_campo['referencia'], $val_campo['referencia_mov']);
}
$val_campo['id'] = $val_campo[$campo_id];
unset($val_campo[$campo_id]);
$val_campo['tipo'] = utf8_encode($post['condiciones']['modelo']);
if (!empty($val_campo['id_canal']) && $val_campo['id_canal'] != '0') {
$canal = $GEE->Canales->get_registro($val_campo['id_canal']);
$val_campo['canal'] = $canal['nombre'];
}
$nuevos_resultados[] = $val_campo;
}
$resultados['resultado'] = utf8_encode_array($nuevos_resultados);
$resultados['paginado'] = utf8_encode_array($results->paginado);
$resultados['modelo'] = utf8_encode($post['condiciones']['modelo']);
}
if (!$error) {
if (!isset($resultados)) {
$resulta = $mysqli->query($query);
if (!empty($mysqli->error)) {
throw new Exception(
sprintf(
"Error %s en el query %s", $mysqli->error, $query
)
);
}
while ($f = $resulta->fetch_assoc()) {
$id = isset($f['tipo']) ? "{$f['tipo']}_{$f['id']}" : $f['id'];
$resultados['resultado'][$id] = $f;
}
if ($query2 != NULL) {
$resulta = $mysqli->query($query2);
print_r($mysqli->error);
while ($f = $resulta->fetch_assoc()) {
$resultados[$post['otro']] = $f;
}
}
}
} else {
$error = true;
}
$mysqli->close();
if ($error) {
header("HTTP/1.0 404 Not Found");
exit;
}
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header('Content-type: application/json');
$resultados = $resultados;
echo $json->encode($resultados);
?>