/** * @param Request $request * @param Application $app * * @return mixed|RedirectResponse */ public function agregar(Request $request, Application $app) { $alias = $app['security']->getToken()->getUser()->getUsername(); $usuarioModelo = new Usuario($app['db']); $usuario = $usuarioModelo->getUsuarioPorAlias($alias); // El autor del articulo debe ser el logueado $idAutor = $usuario['id']; $articuloModelo = new Articulo($app['db']); $articulos = $articuloModelo->getTodo(); $articulosOpcion = array(); foreach ($articulos as $articulo) { $articulosOpcion[$articulo['id']] = $articulo['titulo']; } $initial_data = array('id_articulo' => '', 'contenido' => ''); $form = $app['form.factory']->createBuilder('form', $initial_data); $form = $form->add('id_articulo', 'choice', array('choices' => $articulosOpcion, 'required' => true)); $form = $form->add('contenido', 'textarea', array('required' => true)); $form = $form->getForm(); if ("POST" == $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { $data = $form->getData(); $comentarioModelo = new ComentarioModelo($app['db']); $filasAfectadas = $comentarioModelo->guardar($data['id_articulo'], $idAutor, $data['contenido']); $filasAfectadas = $comentarioModelo->guardar($data['id_articulo'], $idAutor, $data['contenido']); if ($filasAfectadas == 1) { $app['session']->getFlashBag()->add('success', array('message' => '¡Comentario creado!')); } return $app->redirect($app['url_generator']->generate('comentario_list')); } } return $app['twig']->render('backend/comentario/create.html.twig', array("form" => $form->createView())); }
/** * @param string $alias Alias del usuario * @return User * @throws UsernameNotFoundException */ public function loadUserByUsername($alias) { $usuarioModelo = new Usuario($this->conn); $usuario = $usuarioModelo->getUsuarioPorAlias($alias); if (empty($usuario)) { throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $alias)); } return new User($usuario['alias'], $usuario['clave'], explode(',', $usuario['perfil']), true, true, true, true); }
/** * @param Request $request * @param Application $app * * @return JsonResponse */ public function guardarComentario(Request $request, Application $app) { $usuarioLogueado = $app['security']->getToken()->getUser(); if (is_object($usuarioLogueado)) { $usuarioModelo = new Usuario($app['db']); $usuario = $usuarioModelo->getUsuarioPorAlias($usuarioLogueado->getUsername()); unset($usuario['clave']); $comentarioModelo = new ComentarioModelo($app['db']); $comentario = $request->get('comentario'); if (isset($comentario['idArticulo']) && isset($comentario['contenido'])) { $filasAfectadas = $comentarioModelo->guardar($comentario['idArticulo'], $usuario['id'], $comentario['contenido'], 'I'); if ($filasAfectadas == 1) { $response = array('mensaje' => 'Comentario guardado.'); } else { $response = array('mensaje' => 'Comentario no guardado.'); } $response['estatus'] = 200; $response['usuario'] = $usuario; } } else { $response = array('estatus' => 403, 'mensaje' => 'Usuario no logueado.'); } return new JsonResponse($response); }
/** * @param Request $request * @param Application $app * @param int $id * * @return mixed|RedirectResponse */ public function editar(Request $request, Application $app, $id) { $alias = $app['security']->getToken()->getUser()->getUsername(); $usuarioModelo = new Usuario($app['db']); $usuario = $usuarioModelo->getUsuarioPorAlias($alias); // El autor del articulo debe ser el logueado $idAutor = $usuario['id']; // Categorías $categoriaModelo = new Categoria($app['db']); $categorias = $categoriaModelo->getTodo(); $categoriasOpcion = array(); foreach ($categorias as $categoria) { $categoriasOpcion[$categoria['id']] = $categoria['nombre']; } // Etiquetas $etiquetaModelo = new Etiqueta($app['db']); $etiquetas = $etiquetaModelo->getTodo(); $etiquetasOpcion = array(); foreach ($etiquetas as $etiqueta) { $etiquetasOpcion[$etiqueta['id']] = $etiqueta['nombre']; } $articuloModelo = new ArticuloModelo($app['db']); $articulo = $articuloModelo->getArticuloYEtiquetas($id); if (!$articulo) { $app['session']->getFlashBag()->add('warning', array('message' => '¡Artículo no encontrado!')); return $app->redirect($app['url_generator']->generate('articulo_list')); } $initial_data = array('categoria' => $articulo['id_categoria'], 'etiquetas' => $articulo['etiquetas'], 'imagen' => $articulo['imagen'], 'titulo' => $articulo['titulo'], 'descripcion' => $articulo['descripcion'], 'contenido' => $articulo['contenido'], 'fecha_pub' => $articulo['fecha_pub']); $form = $app['form.factory']->createBuilder('form', $initial_data); $form = $form->add('categoria', 'choice', array('choices' => $categoriasOpcion, 'required' => true)); $form = $form->add('etiquetas', 'choice', array('choices' => $etiquetasOpcion, 'required' => false, "multiple" => true)); $form = $form->add('imagen', 'url', array('required' => true)); $form = $form->add('titulo', 'text', array('required' => true)); $form = $form->add('descripcion', 'text', array('required' => true)); $form = $form->add('contenido', 'textarea', array('required' => true)); $form = $form->getForm(); if ("POST" == $app['request']->getMethod()) { $form->handleRequest($app["request"]); if ($form->isValid()) { $data = $form->getData(); $filasAfectadas = $articuloModelo->modificar($id, $idAutor, $data['categoria'], $data['imagen'], $data['titulo'], $data['descripcion'], $data['contenido'], $data['etiquetas']); if (is_array($filasAfectadas) || is_int($filasAfectadas) && $filasAfectadas == 1) { $app['session']->getFlashBag()->add('info', array('message' => "¡Artículo modificado!")); } else { $app['session']->getFlashBag()->add('danger', array('message' => "¡Artículo no modificado!")); } return $app->redirect($app['url_generator']->generate('articulo_edit', array("id" => $id))); } } return $app['twig']->render('backend/articulo/edit.html.twig', array("form" => $form->createView(), "imagen_src" => $articulo['imagen'], "id" => $id)); }
return new Precursor\Provider\UserProvider($app['db']); }))), 'security.access_rules' => Precursor\Options\AccessRules::getAccessRules(), 'security.encoder.digest' => $app->share(function ($app) { return new MessageDigestPasswordEncoder('sha512'); }))); # Proveedor de doctrine para base de datos $app->register(new Silex\Provider\DoctrineServiceProvider(), array('dbs.options' => array('db' => Precursor\Options\Doctrine::getProductionOptions()))); # Proveedor de archivos del Precursor $app->register(new Precursor\Provider\PrecursorFilesProvider(), array('explorer.options' => array('folders.public' => Precursor\Options\Explorer::getPublicFolders(), 'folders.protected' => Precursor\Options\Explorer::getProtectedFolders()))); # Obtener el usuario en todo lugar $app->before(function (Symfony\Component\HttpFoundation\Request $request) use($app) { $token = $app['security']->getToken(); $app['user'] = null; if ($token && !$app['security.trust_resolver']->isAnonymous($token)) { $app['user'] = $token->getUser(); $usuarioModel = new Usuario($app['db']); $usuario = $usuarioModel->getUsuarioPorAlias($app['user']->getUsername()); $app['user'] = $usuario; } }); $filename = __DIR__ . preg_replace('#(\\?.*)$#', '', $_SERVER['REQUEST_URI']); if (php_sapi_name() === 'cli-server' && is_file($filename)) { return false; } $app['asset_path'] = "http://{$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']}/resources"; $app['upload_path'] = "http://{$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']}/resources/uploads"; $app['banner_path'] = "http://{$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']}/resources/img/secciones"; $app['upload_dir'] = __DIR__ . "/resources/uploads/"; $app['debug'] = true; require_once __DIR__ . '/routes/api/base.php'; require_once __DIR__ . '/routes/backend/base.php'; require_once __DIR__ . '/routes/errors.php';