public function indexAction(Request $request)
 {
     $user = $this->getUser();
     if ($user == null) {
         return $this->redirect($this->generateUrl('fos_user_security_login'));
     }
     $em = $this->getDoctrine()->getManager();
     $firstArray = array();
     $firstArray['usuariosRegistrados'] = $em->getRepository('ProjectUserBundle:User')->getAllLength();
     /*$firstArray['backgrounds'] = $em->getRepository('ProjectUserBundle:Background')
     		 ->getAllLength();
     
     		 $firstArray['pages'] = $em->getRepository('ProjectUserBundle:Page')
     		 ->getAllLength();
     
     		 $firstArray['terminosBuscados'] = $em->getRepository('ProjectUserBundle:Search')
     		 ->getAllLength();
     
     		 $firstArray['terminos'] = $em->getRepository('ProjectUserBundle:Search')
     		 ->getDistinctRankingAll();
     
     		 for ($i=0; $i < count($firstArray['terminos']); $i++) {
     		 $firstArray['terminos'][$i]['color'] = DefaultController::randColor($this);
     		 }
     		 */
     $url = $this->generateUrl('project_back_homepage');
     $locale = UtilitiesAPI::getLocale($this);
     $form = null;
     $filtros = null;
     $dql = "SELECT o FROM ProjectUserBundle:User o ";
     $query = $em->createQuery($dql);
     $paginator = $this->get('knp_paginator');
     $pagination = $paginator->paginate($query, $this->getRequest()->query->get('page', 1), 30);
     $secondArray = array('pagination' => $pagination, 'filtros' => $filtros, 'url' => $url);
     $array = array_merge($firstArray, $secondArray);
     return $this->render('ProjectBackBundle:Default:index.html.twig', $array);
 }
 public static function procesar($array, Request $request, $class)
 {
     $data = $array['data'];
     $em = $class->getDoctrine()->getManager();
     $user = $class->getUser();
     $form = $class->createForm(self::NOMBRE_RUTA, $data);
     $form->handleRequest($request);
     if ($form->isValid()) {
         // Procesa accion en base de datos
         $data->setUser($user);
         $em->persist($data);
         $em->flush();
         $manager = $data->getAcceso()->getNombre();
         $customerEm = $class->get('doctrine')->getManager($manager);
         $entity = $data;
         $arreglo = array('post_author' => 1, 'post_date' => $entity->getUpdated()->format('Y-m-d H:i:s'), 'post_date_gmt' => $entity->getUpdated()->format('Y-m-d H:i:s'), 'post_content' => $entity->getDescripcion(), 'post_title' => $entity->getNombre(), 'post_excerpt' => '', 'post_status' => 'publish', 'comment_status' => 'open', 'ping_status' => 'open', 'post_password' => '', 'post_name' => 'item-' . UtilitiesAPI::getFriendlyName($entity->getNombre(), $class), 'to_ping' => '', 'pinged' => '', 'post_modified' => $entity->getUpdated()->format('Y-m-d H:i:s'), 'post_modified_gmt' => $entity->getUpdated()->format('Y-m-d H:i:s'), 'post_content_filtered' => '', 'post_parent' => 0, 'guid' => 'http://milcasinos.com/item-' . UtilitiesAPI::getFriendlyName($entity->getNombre(), $class), 'menu_order' => 0, 'post_type' => 'post', 'post_mime_type' => '', 'comment_count' => 0);
         if ($entity->getFechaPublicacion() != null) {
             $arreglo['post_date'] = $entity->getFechaPublicacion()->format('Y-m-d H:i:s');
             $arreglo['post_date_gmt'] = $entity->getFechaPublicacion()->format('Y-m-d H:i:s');
             $arreglo['post_modified'] = $entity->getFechaPublicacion()->format('Y-m-d H:i:s');
             $arreglo['post_modified_gmt'] = $entity->getFechaPublicacion()->format('Y-m-d H:i:s');
             $arreglo['post_status'] = 'future';
         }
         $stmt = $customerEm->getConnection()->insert('wp_posts', $arreglo);
         return $class->redirect($class->generateUrl('project_back_parser_' . self::NOMBRE_RUTA . '_list'));
     }
     $dql = "SELECT o FROM ProjectUserBundle:Imagen o ";
     $query = $em->createQuery($dql);
     $paginator = $class->get('knp_paginator');
     $page = $class->getRequest()->query->get('page', 1);
     //La página de los comentarios, si no hay petición(es null) por defecto es 1
     $pagination = $paginator->paginate($query, $page, 30);
     //Los comentarios de la página (10 por página)
     if ($class->getRequest()->query->get('page') != null) {
         $arreglo = array('pagination' => $pagination);
         return $class->render('ProjectBackBundle:Helpers:modal-imagenes-listado.html.twig', $arreglo);
     }
     //$pagination = $paginator -> paginate($query, $class -> getRequest() -> query -> get('page', 1), 30);
     $array['pagination'] = $pagination;
     $array['form'] = $form->createView();
     $array['nombreClase'] = self::NOMBRE_CLASE;
     $array['nombreRuta'] = self::NOMBRE_RUTA;
     return $class->render('ProjectBackBundle:' . self::NOMBRE_CLASE . ':new-edit.html.twig', $array);
 }
 public static function yogonetLatinoamericaAction($em, $rutaImagenes, $array, $fuente, $class)
 {
     //$em = $class -> getDoctrine() -> getManager();
     //Ruta del listado de noticias de la web a analizar
     $url = 'http://www.yogonet.com/latinoamerica/';
     //Con la funcion file_get_contents se obtiene todo el html que devuelve la web señalada
     set_time_limit(0);
     $htm = file_get_contents($url);
     //Luego de estudiar el codigo fuente de la web, se descubre que todos los elementos de interes
     //Se encuentran dentro del div LATERAL_IZQUIERDO_DETALLE, por ende se hace un explode para poder
     //Obtener los argumentos que esten antes o despues (adentro del div)
     //Noticias Principales en <div class="panel-col-top panel-panel">
     $str = 'panel-col-top panel-panel';
     $arr = explode($str, $htm);
     $arr = explode('panel-col-bottom panel-panel', $arr[1]);
     $contenido = $arr[0];
     //var_dump($contenido);exit;
     //Una vez adentro del div de nuestro interes, se observa que todos los enlaces que se necesitan
     //Comienzan por detalle_noticia.php?id=
     $enlaces = explode("\"/latinoamerica/", $contenido);
     //Se hace un explode para obtener todos los codigos html que comiencen justo despues de http://www.apuestas-deportivas.es/pronostico/
     $idNoticias = array();
     //Se realiza un ciclo for para obtener todos los ids de las noticias
     for ($i = 1; $i < count($enlaces); $i++) {
         $cadena = $enlaces[$i];
         //En estas cadenas resultados del ultimo explode hay mas contenido del que nos interesa
         //Un ejemplo de un link es detalle_noticia.php?id=83851" por ende se sabe que el codigo del id
         //termina justo antes de la comilla " para esto se usa strpos para ubicar la posicion y luego extraer el id
         $posicionFinal = strpos($cadena, '"');
         $id = substr($cadena, 0, $posicionFinal);
         //Se comienca en $i-1 porque el primer link que devuelve esta web siempre es vacio y se requieren
         //son los numeros de los id
         $idNoticias[$i - 1] = $id;
     }
     /*
     Para el listado de noticias de sector del juego por cada cuadricula hay 3 enlaces,
     uno en el texto, otro en la imagen y otro en el titulo, por ende despues de buscar los links
     apareceran duplicados, para evitar este problema se usa la funcion array_unique que elimina
     los duplicados, pero conserva las antiguas claves, por esto se debe usar foreach y no un for normal
     */
     $idNoticias = array_unique($idNoticias);
     /*
     Se procede a recorrer cada uno de los enlaces para extraer la data y almacenarla en la base de datos
     Se busca recorrer el listado de urls que se genero ejemplo:
     http://sectordeljuego.com/detalle_noticia.php?id=83851
     http://sectordeljuego.com/detalle_noticia.php?id=83850
     http://sectordeljuego.com/detalle_noticia.php?id=83849
     .
     .
     .
     Y asi sucesivamente, se ira recorriendo y obteniendo los textos y descargando una imagen por 
     cada articulo
     */
     foreach ($idNoticias as $key => $value) {
         ini_set('max_execution_time', 300);
         // Tener en cuenta que no es igual la ruta lista_noticias a detalle_noticia
         $urlNoticia = "http://www.yogonet.com/latinoamerica/" . $value;
         $html = file_get_contents($urlNoticia);
         $busqueda = 'buildmode-full';
         $html = explode($busqueda, $html);
         $html = explode('field-field-fuente', $html[1]);
         $html = $html[0];
         //Titulo
         $busquedaTituloInicio = 'field-title-noticia-importada">';
         $busquedaTituloFin = '<div id="plugins-sociales">';
         $parteTitulo = explode($busquedaTituloInicio, $html);
         $parteTitulo = explode($busquedaTituloFin, $parteTitulo[1]);
         $titulo = $parteTitulo[0];
         $busquedaTituloInicio = 'field-item">';
         $busquedaTituloFin = '</div>';
         $parteTitulo = explode($busquedaTituloInicio, $titulo);
         $parteTitulo = explode($busquedaTituloFin, $parteTitulo[1]);
         $titulo = $parteTitulo[0];
         $elemento = $em->getRepository('ProjectUserBundle:Noticia')->findByNombre($titulo);
         if ($elemento) {
             break;
         }
         //echo'<br>'.$titulo;
         $busquedaInicio = 'http://www.yogonet.comlatinoamerica/sites/default/files/noticias/imagenes/';
         $busquedaFin = '?';
         $elemento = explode($busquedaInicio, $html);
         $imagen = null;
         if (count($elemento) > 1) {
             $elemento = explode($busquedaFin, $elemento[1]);
             $imagen = $elemento[0];
             $imagen = $busquedaInicio . $imagen;
             $urlImagen = $imagen;
             $extension = explode(".", $urlImagen);
             $extension = $extension[count($extension) - 1];
             $path = $rutaImagenes;
             //$path = 'C:/wamp/www/parseoYogonet/uploads';
             $nombreImagen = sha1($urlImagen);
             ini_set('max_execution_time', 300);
             $ch = curl_init($urlImagen);
             $fp = fopen(sprintf('%s/%s.%s', $path, $nombreImagen, $extension), 'wb');
             curl_setopt($ch, CURLOPT_FILE, $fp);
             curl_setopt($ch, CURLOPT_HEADER, 0);
             curl_exec($ch);
             curl_close($ch);
             fclose($fp);
             $nombreLimpio = UtilitiesAPI::limpiaNombre($titulo, $class);
             $imagen = new Imagen();
             $imagen->setNombre($nombreLimpio);
             $imagen->setTags(UtilitiesAPI::convierteATags($nombreLimpio, $class));
             $imagen->setPath($nombreImagen . '.' . $extension);
             //$imagen -> setIp($class -> container -> get('request') -> getClientIp());
             $em->persist($imagen);
             $em->flush();
             $array['contadorImagenes']++;
         }
         $busquedaInicio = 'sumario-noticia-importada">';
         $busquedaFin = '<div class="field field-type-text field-field-fuente-noticia-importada">';
         $busqueda = explode($busquedaInicio, $html);
         $busqueda = explode($busquedaFin, '<div>' . $busqueda[1]);
         $texto = $busqueda[0];
         $usuario = $em->getRepository('ProjectUserBundle:User')->find(1);
         $object = new Noticia();
         $object->setFuente($fuente);
         $object->setUser($usuario);
         $object->setNombre($titulo);
         if ($imagen != null) {
             $object->setImagen($imagen);
         }
         $object->setDescripcion($texto);
         $em->persist($object);
         $em->flush();
         $array['contadorNoticias']++;
     }
     return $array;
 }