/**
  * 
  * @param type $posicion
  * @param type $icono
  * @param type $propiedades
  */
 public function addMarker($posicion, $icono, $propiedades)
 {
     $cache = Cache::iniciar();
     $folder = $this->_kml->Document;
     //se crea el PATH absoluto desde la URL
     $icono = str_replace(base_url(), FCPATH, $icono);
     $ya_existe = array_search($icono, $this->_style_icons);
     if ($ya_existe === false) {
         $id_style = $this->_ci->string_core->rand_string(25);
         $style = $folder->addChild("Style");
         $style->addAttribute("id", $id_style);
         $iconStyle = $style->addChild("IconStyle");
         $icon = $iconStyle->addChild("Icon");
         $name = $id_style . "." . $this->_imgExt($icono);
         $path = "icons/" . $name;
         $icon->addChild("href", $path);
         $cache->save(array("name" => $name, "file" => file_get_contents($icono)), $id_style);
         $this->_style_icons[$id_style] = $icono;
     } else {
         $id_style = $ya_existe;
     }
     $placemark = $folder->addChild("Placemark");
     $placemark->addChild("styleUrl", "#" . $id_style);
     $point = $placemark->addChild("Point");
     $point->addChild("coordinates", $posicion["lng"] . "," . $posicion["lat"] . ",0.");
 }
 /**
  * Constructor
  */
 public function __construct()
 {
     //ini_set('memory_limit', '64M');
     $this->_ci =& get_instance();
     $this->_ci->load->model("emergencia_model");
     $this->_ci->load->library(array("cache", "pdf"));
     $this->_ci->load->helper(array("session", "modulo/usuario/usuario", "modulo/emergencia/emergencia", "modulo/emergencia/emergencia_reporte", "modulo/evento_reporte/layout"));
     $this->_cache = Cache::iniciar();
     $this->_pdf = $this->_ci->pdf->load();
 }
 /**
  * Agrega icono a la subcapa
  * @param string $hash
  */
 public function addIcono($hash)
 {
     $cache = Cache::iniciar();
     if ($file = $cache->load($hash)) {
         $path = $this->_path . $file["filename"];
         file_put_contents(FCPATH . $path, $file["content"]);
         $data = array("geometria_icono" => $path);
         $this->_ci->_capa_detalle_model->update($data, $this->_subcapa->geometria_id);
     }
     $cache->remove($hash);
 }
 /**
  * Retorna imagen del perfil
  * @return string
  */
 public function render()
 {
     $imagen = "";
     $cache = Cache::iniciar();
     if (!($imagen = $cache->load("imagen_perfil_" . $this->_id_usuario))) {
         $usuario = $this->_ci->_usuario_model->getById($this->_id_usuario);
         if (!is_null($usuario)) {
             $rut = explode("-", $usuario->usu_c_rut);
             $url = "http://192.168.10.165/static/images/personas/" . $rut[0] . ".jpg";
             $url_midas = "http://midas.minsal.cl/static/images/personas/" . $rut[0] . ".jpg";
             $headers = @get_headers($url);
             if (stripos($headers[0], "200 OK")) {
                 $imagen = "<img width=\"" . $this->_width . "px\" class=\"img-circle\" src=\"" . $url_midas . "\" alt=\"\">";
             } else {
                 $imagen = "<img width=\"" . $this->_width . "px\" class=\"img-circle\" src=\"" . base_url("assets/img/usuario.png") . "\" alt=\"\">";
             }
         }
         $cache->save($imagen, "imagen_perfil_" . $this->_id_usuario);
     }
     return $imagen;
 }
 /**
  * 
  * @param array $lista_kml
  */
 public function guardar($lista_kml)
 {
     $guardados = array();
     if (count($lista_kml) > 0) {
         foreach ($lista_kml as $kml_seleccionado) {
             $kml = $this->_emergencia_kml_model->getById($kml_seleccionado["id"]);
             if (is_null($kml)) {
                 $cache = Cache::iniciar();
                 $file = $cache->load($kml_seleccionado["hash"]);
                 $data = array("id_emergencia" => $this->_id_emergencia, "tipo" => $kml_seleccionado["tipo"], "archivo" => $kml_seleccionado["archivo"], "nombre" => $kml_seleccionado["nombre"], "kml" => $file["archivo"]);
                 $id = $this->_emergencia_kml_model->query()->insert($data);
                 $guardados[$kml_seleccionado["id"]] = $id;
             } else {
                 $id = $kml->id;
                 $guardados[$kml_seleccionado["id"]] = $kml->id;
             }
             $elementos_guardados = array();
             if (count($kml_seleccionado["elementos"]) > 0) {
                 foreach ($kml_seleccionado["elementos"] as $elemento_json) {
                     $elemento = Zend_Json::decode($elemento_json);
                     switch ($elemento["tipo"]) {
                         case "PUNTO":
                             $coordenadas = array("lat" => $elemento["coordenadas"]["lat"], "lon" => $elemento["coordenadas"]["lng"]);
                             break;
                         case "POLIGONO":
                             $coordenadas = array("poligono" => array());
                             foreach ($elemento["coordenadas"] as $elemento_coordenada) {
                                 $coordenadas["poligono"][] = array($elemento_coordenada["lng"], $elemento_coordenada["lat"]);
                             }
                             break;
                         case "LINEA":
                             $coordenadas = array("linea" => array());
                             foreach ($elemento["coordenadas"] as $elemento_coordenada) {
                                 $coordenadas["linea"][] = array($elemento_coordenada["lat"], $elemento_coordenada["lng"]);
                             }
                             break;
                         default:
                             break;
                     }
                     if (isset($elemento["html"]) && $elemento["html"] != "") {
                         $propiedades = $elemento["html"];
                     } else {
                         $propiedades = Zend_Json::encode($elemento["propiedades"]);
                     }
                     $data_elemento = array("id_kml" => $id, "nombre" => $elemento["nombre"], "tipo" => $elemento["tipo"], "propiedades" => $propiedades, "coordenadas" => Zend_Json::encode($coordenadas));
                     if ($elemento["tipo"] == "PUNTO") {
                         $data_elemento["icono"] = $this->_saveIcon($id, $elemento["primaria"], $elemento["icono"]);
                     }
                     if ($elemento["tipo"] == "MULTIPOLIGONO" || $elemento["tipo"] == "POLIGONO" || $elemento["tipo"] == "LINEA") {
                         $data_elemento["color"] = $elemento["color"];
                     }
                     $existe = $this->_emergencia_kml_elemento_model->getById($elemento["primaria"]);
                     if (!is_null($existe)) {
                         $this->_emergencia_kml_elemento_model->update($data_elemento, $existe->id);
                         $elementos_guardados[] = $existe->id;
                     } else {
                         $elementos_guardados[] = $this->_emergencia_kml_elemento_model->insert($data_elemento);
                     }
                 }
             }
             $this->_emergencia_kml_elemento_model->deleteNotIn($id, $elementos_guardados);
         }
     }
     $this->_emergencia_kml_model->deleteNotIn($this->_id_emergencia, $guardados);
     $this->_limpiarIconosEliminados();
     return $guardados;
 }
 public function subir_CapaIconTemp()
 {
     $error = false;
     $this->load->helper(array("session", "debug"));
     $this->load->library("cache");
     sessionValidation();
     if (!isset($_FILES)) {
         show_error("No se han detectado archivos", 500, "Error interno");
     }
     $tmp_name = $_FILES['input_icono_subcapa']['tmp_name'];
     $nombres = $_FILES['input_icono_subcapa']['name'];
     $size = $_FILES['input_icono_subcapa']['size'];
     $type = $_FILES['input_icono_subcapa']['type'];
     $fp = file_get_contents($tmp_name, 'r');
     $nombre_cache_id = 'icon_subcapa_temp_' . uniqid();
     $binary_path = 'media/tmp/' . $nombre_cache_id;
     $ftmp = fopen($binary_path, 'w');
     fwrite($ftmp, $fp);
     $arr_cache = array('filename' => $nombres, 'nombre_cache_id' => $nombre_cache_id, 'content' => $fp, 'size' => $size, 'type' => $type);
     $cache = Cache::iniciar();
     $cache->save($arr_cache, $nombre_cache_id);
     echo json_encode(array("uploaded" => 1, 'nombre_cache_id' => $nombre_cache_id, 'ruta' => base_url($binary_path)));
 }
 /**
  * Guarda el reporte en cache temporal
  * @param binary $file
  * @return string
  */
 protected function _guardarReporteTemporal($file, $codigo)
 {
     $hash = $this->string_core->rand_string(23);
     $cache = Cache::iniciar();
     $cache->save(array("archivo" => $file, "archivo_nombre" => "reporte_" . $codigo . ".pdf", "mime" => "application/pdf", "tipo" => "pdf"), $hash);
     return $hash;
 }
 /**
  * Prepara el archivo y lo coloca en directorio temporal
  * @param string $hash
  */
 public function setFileHash($hash)
 {
     $this->_hash = $hash;
     $cache = Cache::iniciar();
     if ($this->_file_info = $cache->load($hash)) {
         $this->_dir_temp .= $this->_ci->string_core->rand_string(21);
         mkdir($this->_dir_temp, 0755);
         file_put_contents($this->_dir_temp . "/" . $this->_file_info["archivo_nombre"], $this->_file_info["archivo"]);
         if ($this->_file_info["tipo"] == "kmz") {
             $filter = new Zend_Filter_Decompress(array('adapter' => 'Zip', 'options' => array('target' => $this->_dir_temp)));
             $compressed = $filter->filter($this->_dir_temp . "/" . $this->_file_info["archivo_nombre"]);
             if ($compressed) {
                 unlink($this->_dir_temp . "/" . $this->_file_info["archivo_nombre"]);
             }
         }
     }
 }
 /**
  * Muestra KML temporal
  * @throws Exception
  */
 public function download_temporal()
 {
     $this->load->library(array("cache"));
     $params = $this->uri->uri_to_assoc();
     $cache = Cache::iniciar();
     if ($archivo = $cache->load($params["hash"])) {
         header("Content-Type: " . $archivo["mime"]);
         header("Content-Disposition: inline;filename=" . $archivo["archivo_nombre"]);
         header('Expires: 0');
         header('Cache-Control: must-revalidate');
         header('Pragma: public');
         echo $archivo["archivo"];
     }
 }
 /**
  * Guarda el archivo en cache
  * @return boolean
  */
 protected function _saveToCache()
 {
     $cache = Cache::iniciar();
     $cache->save(array("archivo" => file_get_contents($this->_target), "archivo_nombre" => $this->_file_name, "mime" => $this->_mime, "tipo" => $this->_file_ext), $this->_hash);
     $retorno = array("correcto" => true, "mime" => $this->_mime, "archivo_nombre" => $this->_file_name, "tipo" => $this->_file_ext, "hash" => $this->_hash);
     unlink($this->_target);
     return $retorno;
 }
 /**
  * Crea archivo kml temporal
  */
 public function ajax_exportar_kml_elemento()
 {
     ini_set('error_reporting', E_ALL ^ E_WARNING);
     $correcto = true;
     header('Content-type: application/json');
     $params = $this->input->post(null, true);
     $this->load->library(array("kml/kml_create", "cache", "core/string/string_core"));
     $clave = $this->string_core->rand_string(20);
     try {
         $cache = Cache::iniciar();
         $lista_elementos = Zend_Json::decode($params["elemento"]);
         foreach ($lista_elementos as $elemento) {
             print_r($elemento);
             die;
             $this->kml_create->addPoligon("PRUEBA", $elemento["coordenadas"], $elemento["color"], $elemento["informacion"]);
         }
         $lista_marcadores = Zend_Json::decode($params["marcadores"]);
         foreach ($lista_marcadores as $marcador) {
             $this->kml_create->addMarker($marcador["posicion"], $marcador["icono"], $marcador["informacion"]);
         }
         $cache->save($this->kml_create->getKml(), $clave);
     } catch (Exception $e) {
         $correcto = false;
     }
     echo Zend_Json::encode(array("file" => $clave, "images" => $this->kml_create->getStyleIcons(), "correcto" => $correcto));
 }
function imagenPerfil($id_usuario)
{
    $ci =& get_instance();
    $ci->load->library(array("cache"));
    $ci->load->model("usuario_model", "_usuario_model");
    $resultado = false;
    $cache = Cache::iniciar();
    if (!($salida = $cache->load("imagen_perfil_array_" . $id_usuario))) {
        $usuario = $ci->_usuario_model->getById($id_usuario);
        if (!is_null($usuario)) {
            $rut = explode("-", $usuario->usu_c_rut);
            $url = "http://192.168.10.165/static/images/personas/" . $rut[0] . ".jpg";
            $url_midas = "http://midas.minsal.cl/static/images/personas/" . $rut[0] . ".jpg";
            $headers = @get_headers($url);
            if (stripos($headers[0], "200 OK")) {
                $imagen = $url_midas;
                $resultado = true;
            } else {
                $imagen = base_url("assets/img/usuario.png");
            }
            $salida = array("url" => $imagen, "resultado" => $resultado);
        }
        $cache->save($salida, "imagen_perfil_array_" . $id_usuario);
    }
    return $salida;
}
 /**
  * Agrega archivo
  * @param string $hash
  * @param int $tipo
  * @param int $id
  */
 public function addArchivo($hash, $descripcion, $tipo, $id = null, $id_usuario)
 {
     $cache = Cache::iniciar();
     $archivo = $this->_ci->_archivo_model->getById($id);
     if (!is_null($archivo)) {
         $this->_agregados[] = $archivo->arch_ia_id;
     } else {
         if ($temporal = $cache->load($hash)) {
             $nuevo_hash = $this->_ci->_archivo_model->newHash();
             $nombre_archivo = $nuevo_hash . "." . $temporal["tipo"];
             file_put_contents(FCPATH . $this->_path . $nombre_archivo, $temporal["archivo"]);
             $data = array("arch_c_nombre" => $temporal["archivo_nombre"], "arch_c_descripcion" => $descripcion, "path" => $this->_path . $nombre_archivo, "arch_c_mime" => $temporal["mime"], "arch_c_tipo" => $tipo, "arch_c_hash" => $nuevo_hash, "usu_ia_id" => $id_usuario, "arch_f_fecha" => Date("Y-m-d H:i:s"));
             $this->_agregados[] = $this->_ci->_archivo_model->insert($data);
         }
     }
     return $this->_agregados[count($this->_agregados) - 1];
 }