<?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);
?>
 
 
        