Ejemplo n.º 1
0
 public function __construct($dbAdapter)
 {
     //Acesso de usuários
     $tblUsuario = new Model_Usuario($dbAdapter);
     $usuarios = $tblUsuario->fetchAll('`status` = "ativo" AND `administrador` = 0');
     $tblResource = new Model_Resource($dbAdapter);
     $resources = $tblResource->fetchAll();
     foreach ($resources as $resource) {
         if (strpos($resource->resource, ':') !== false) {
             list($module, $controller) = explode(':', $resource->resource);
             if (!$this->has($module)) {
                 $this->addResource(new Zend_Acl_Resource($module));
             } else {
                 continue;
             }
         } else {
             $this->addResource(new Zend_Acl_Resource($resource->resource));
         }
     }
     foreach ($usuarios as $usuario) {
         $this->addRole(new Zend_Acl_Role($usuario->usuario));
         if (!empty($usuario->cliente)) {
             $this->deny($usuario->usuario);
         }
         $permissoes = $usuario->findDependentRowset('Model_UsuarioPermissao');
         foreach ($permissoes as $permissao) {
             if (strpos($permissao->resource, ':') !== false) {
                 list($module, $controller) = explode(':', $permissao->resource);
                 $this->allow($usuario->usuario, $module, $controller);
             } else {
                 $this->allow($usuario->usuario, $permissao->resource);
             }
         }
     }
     $admins = $tblUsuario->fetchAll('status = "ativo" AND `administrador` = 1');
     foreach ($admins as $admin) {
         $this->addRole(new Zend_Acl_Role($admin->usuario));
         $this->allow($admin->usuario);
     }
     //Acesso de clientes
     $this->addResource(new Zend_Acl_Resource("sac"));
     $tblCliente = new Model_Cliente();
     $clientes = $tblCliente->fetchAll('`status` = "ativo" AND usuario IS NOT NULL AND usuario <> ""');
     foreach ($clientes as $cliente) {
         $this->addRole(new Zend_Acl_Role($cliente->usuario));
         $this->allow($cliente->usuario, "sac");
     }
     $this->addRole(new Zend_Acl_Role('visitante'));
     // Todo mundo tem acesso a...
     $this->allow(null, 'admin', 'login');
     $this->allow(null, 'sac', 'login');
     // Todo mundo tem acesso ao default do projeto
     $this->allow(null, 'default');
 }
Ejemplo n.º 2
0
 public function action_borrar($id)
 {
     // Verifica que solo un usuario logueado este entrando
     Model_Usuario::otorgar_acceso($this->request);
     ORM::factory("persona")->delete($id);
     $this->request->response = "<script language='javascript' type='text/javascript'>\n\t    history.back();\n\t    </script>";
 }
Ejemplo n.º 3
0
 public static function getInstance()
 {
     if (self::$_instance == null) {
         self::$_instance = new Model_Usuario();
     }
     return self::$_instance;
 }
Ejemplo n.º 4
0
 public function senha_n(&$param)
 {
     $rs = Model_Usuario::getInstance()->login(array('tx_senha' => $param['senha_n'], 'no_email' => $_SESSION['tw_auth']['no_email']));
     if (!$rs) {
         echo json_encode(array('status' => 0, 'msg' => _("Sua senha está incorreta!")));
         die;
     }
 }
Ejemplo n.º 5
0
 public function cadastrar()
 {
     $view = new View();
     if ($_POST) {
         $vo = new Vo_Usuario();
         $vo->setNome($_POST['nome']);
         $vo->setEmail($_POST['email']);
         $vo->setLogin($_POST['login']);
         $vo->setSenha($_POST['senha']);
         $model = new Model_Usuario();
         try {
             $pk = $model->cadastrar($vo);
         } catch (Exception $exc) {
             $view->add('erro', $exc->getMessage());
         }
     }
     $view->desenhar('usuario/cadastrar');
 }
Ejemplo n.º 6
0
 public function login($param)
 {
     $arUser = Model_Usuario::getInstance()->login($param);
     if ($arUser) {
         $_SESSION['tw_auth'] = $arUser;
         return true;
     } else {
         return false;
     }
 }
Ejemplo n.º 7
0
 public function before()
 {
     $this->nombre_consejo = Model_Globales::$nombre_consejo;
     // Hacemos disponible las variables generales
     View::bind_global('nombre_consejo', $this->nombre_consejo);
     View::bind_global('titulo', $this->titulo);
     View::bind_global('contenido', $this->contenido);
     if (Model_Usuario::esta_iniciado()) {
         View::set_global("admin_lateral", View::factory("admin/menu_lateral"));
     } else {
         View::set_global("admin_lateral", NULL);
     }
     parent::before();
 }
Ejemplo n.º 8
0
 /**
  * Vista de registro de nuevas informaciones
  */
 public function action_editar($id)
 {
     Model_Usuario::otorgar_acceso($this->request);
     $this->set_titulo("Editar ev&iacute;o");
     $envio = ORM::factory("envio", $id);
     if ($_POST) {
         if ($this->editar_info($id)) {
             $this->request->redirect("noticia/ver/" . $id);
         }
     } else {
         $this->formulario_subir_info = Arr::overwrite($this->formulario_subir_info, $envio->as_array());
     }
     $vista = View::factory("envio/subir")->set("usuario_id", $envio->usuario->id)->set("cat", NULL)->set("errores", $this->errores_subir_info)->set("formulario", $this->formulario_subir_info);
     $this->contenido = $vista;
 }
Ejemplo n.º 9
0
 /**
  * Visualização perfil individual, e não autenticado
  */
 public function profileAction()
 {
     $this->view->content = 800;
     $this->view->isProfile = true;
     $this->view->usuario = Model_Usuario::getInstance()->get(array('nu_usuario' => $this->getRequest()->getParam('id'), 'fields' => array('nu_usuario', 'nu_imagem', 'seg_count', 'no_usuario', 'co_usuario', 'seguidor')));
     if ($this->view->usuario) {
         $this->view->title = $this->view->usuario['no_usuario'];
         $this->view->usuario['size'] = 128;
         $this->view->favicon = General::urlImgUser($this->view->usuario);
         $this->view->post = Model_Post::getInstance()->get(array('tipo' => 'usuario', 'co_usuario' => $this->view->usuario['co_usuario']));
         if ($this->view->usuario['seguido'] > 0) {
             $this->view->arSeguindo = Model_Usuario::getInstance()->seguidor(array('co_usuario' => $this->view->usuario['co_usuario']));
         }
         if ($this->view->usuario['seguidor'] > 0) {
             $this->view->arSeguidor = Model_Usuario::getInstance()->seguidor(array('tipo' => 'seguidor', 'co_usuario' => $this->view->usuario['co_usuario']));
         }
     } else {
         $this->_helper->viewRenderer->setNoRender();
         echo $this->view->partial('helpers/404.phtml');
     }
 }
Ejemplo n.º 10
0
 /**
  * Comenzamos a seguir al usuario.
  * @param string $usuario Usuario a seguir.
  */
 public function action_seguir($usuario)
 {
     // Cargamos el usuario.
     $this->cargar_usuario($usuario);
     // Verifico estar logueado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes estar logueado para poder seguir usuarios.';
         Request::redirect('/usuario/login');
     }
     // Verificamos no sea uno mismo.
     if (Usuario::$usuario_id == $this->usuario->id) {
         $_SESSION['flash_error'] = 'El usuario al cual quieres seguir no se encuentra disponible.';
         Request::redirect('/perfil/index/' . $usuario->nick);
     }
     // Verifico el estado.
     if ($this->usuario->estado !== Model_Usuario::ESTADO_ACTIVA) {
         $_SESSION['flash_error'] = 'El usuario al cual quieres seguir no se encuentra disponible.';
         Request::redirect('/perfil/index/' . $this->usuario->nick);
     }
     // Verifico no sea seguidor.
     if ($this->usuario->es_seguidor(Usuario::$usuario_id)) {
         $_SESSION['flash_error'] = 'El usuario al cual quieres seguir no se encuentra disponible.';
         Request::redirect('/perfil/index/' . $this->usuario->nick);
     }
     // Sigo al usuario.
     $this->usuario->seguir(Usuario::$usuario_id);
     // Envio el suceso.
     $model_suceso = new Model_Suceso();
     if ($this->usuario->id != Usuario::$usuario_id) {
         $model_suceso->crear($this->usuario->id, 'usuario_seguir', TRUE, $this->usuario->id, Usuario::$usuario_id);
         $model_suceso->crear(Usuario::$usuario_id, 'usuario_seguir', FALSE, $this->usuario->id, Usuario::$usuario_id);
     } else {
         $model_suceso->crear($this->usuario->id, 'usuario_seguir', TRUE, $this->usuario->id, Usuario::$usuario_id);
     }
     // Informo resultado.
     $_SESSION['flash_success'] = 'Comenzaste a seguir al usuario correctamente.';
     Request::redirect('/perfil/index/' . $this->usuario->nick);
 }
Ejemplo n.º 11
0
 /**
  * Bloqueos a los usuarios.
  */
 public function action_bloqueados()
 {
     // Asignamos el título.
     $this->template->assign('title', 'Cuenta - Bloqueos');
     // Cargamos la vista.
     $view = View::factory('cuenta/bloqueos');
     // Seteo parametros.
     $view->assign('usuario', '');
     $view->assign('error_usuario', FALSE);
     if (Request::method() == 'POST') {
         // Obtengo el usuario.
         $usuario = isset($_POST['usuario']) ? trim($_POST['usuario']) : '';
         // Seteo a la vista.
         $view->assign('usuario', $usuario);
         $error = FALSE;
         // Verifico el nick
         if (!preg_match('/^[a-zA-Z0-9]{4,16}$/D', $usuario)) {
             $view->assign('error_usuario', 'El usuario ingresado no es válido.');
             $error = TRUE;
         }
         if (!$error) {
             // Verifico exista.
             $model_usuario = new Model_Usuario();
             if (!$model_usuario->exists_nick($usuario)) {
                 $view->assign('error_usuario', 'El usuario ingresado no es válido.');
                 $error = TRUE;
             } else {
                 $model_usuario->load_by_nick($usuario);
             }
         }
         if (!$error) {
             // Verifico no sea uno mismo.
             if ($model_usuario->id === Usuario::$usuario_id) {
                 $view->assign('error_usuario', 'El usuario ingresado no es válido.');
                 $error = TRUE;
             }
         }
         if (!$error) {
             // Verifico estado.
             if ($model_usuario->estado !== Model_Usuario::ESTADO_ACTIVA) {
                 $view->assign('error_usuario', 'El usuario ingresado no es válido.');
                 $error = TRUE;
             }
         }
         if (!$error) {
             // Verifico no se encuentre bloqueado.
             if (Usuario::usuario()->esta_bloqueado($model_usuario->id)) {
                 $view->assign('error_usuario', 'El usuario ingresado no es válido.');
                 $error = TRUE;
             }
         }
         if (!$error) {
             // Bloqueo el usuario.
             Usuario::usuario()->bloquear($model_usuario->id);
             // Envio el suceso.
             $model_suceso = new Model_Suceso();
             if (Usuario::$usuario_id != $model_usuario->id) {
                 $model_suceso->crear($model_usuario->id, 'usuario_bloqueo', TRUE, Usuario::$usuario_id, $model_usuario->id, 0);
                 $model_suceso->crear(Usuario::$usuario_id, 'usuario_bloqueo', FALSE, Usuario::$usuario_id, $model_usuario->id, 0);
             } else {
                 $model_suceso->crear($model_usuario->id, 'usuario_bloqueo', FALSE, Usuario::$usuario_id, $model_usuario->id, 0);
             }
             // Envio notificación.
             $_SESSION['flash_success'] = 'El usuario fue bloqueado correctamente.';
             Request::redirect('/cuenta/bloqueados');
         }
     }
     // Cargo los bloqueos.
     $bloqueos = Usuario::usuario()->bloqueos();
     foreach ($bloqueos as $k => $v) {
         $bloqueos[$k] = $v->as_array();
     }
     $view->assign('bloqueos', $bloqueos);
     // Menu.
     $this->template->assign('master_bar', parent::base_menu('inicio'));
     $this->template->assign('top_bar', $this->submenu('bloqueados'));
     // Asignamos la vista.
     $this->template->assign('contenido', $view->parse());
 }
Ejemplo n.º 12
0
 /**
  * Cambiamos el rango de un usuario.
  * @param int $usuario ID del usuario al que se le cambia el rango.
  * @param int $rango ID del rango a setear.
  */
 public function action_cambiar_rango($usuario, $rango)
 {
     $usuario = (int) $usuario;
     // Verificamos no sea actual.
     if ($usuario == Usuario::$usuario_id) {
         $_SESSION['flash_error'] = 'El usuario que deseas cambiarle el rango no se encuentra disponible.';
         Request::redirect('/admin/usuario/');
     }
     // Cargamos el modelo del usuario.
     $model_usuario = new Model_Usuario($usuario);
     if (!$model_usuario->existe()) {
         $_SESSION['flash_error'] = 'El usuario que deseas cambiarle el rango no se encuentra disponible.';
         Request::redirect('/admin/usuario/');
     }
     // Verifico su orden.
     if ($model_usuario->rango()->es_superior(Usuario::usuario()->rango)) {
         $_SESSION['flash_error'] = 'El usuario que deseas cambiarle el rango no se encuentra disponible.';
         Request::redirect('/admin/usuario/');
     }
     $rango = (int) $rango;
     // Verifico el rango.
     $model_rango = new Model_Usuario_Rango($rango);
     if ($model_rango->existe()) {
         // Verifico el nivel.
         if ($rango == Usuario::usuario()->rango || $model_rango->es_superior(Usuario::usuario()->rango)) {
             $_SESSION['flash_error'] = 'Rango que deseas asignar no se encuentra disponible.';
             Request::redirect('/admin/usuario/');
         }
         // Actualizo el rango.
         $model_usuario->actualizar_campo('rango', $rango);
         // Envio el suceso.
         $model_suceso = new Model_Suceso();
         if (Usuario::$usuario_id != $model_usuario->id) {
             $model_suceso->crear($model_usuario->id, 'usuario_cambio_rango', TRUE, $model_usuario->id, $rango, Usuario::$usuario_id);
             $model_suceso->crear(Usuario::$usuario_id, 'usuario_cambio_rango', FALSE, $model_usuario->id, $rango, Usuario::$usuario_id);
         } else {
             $model_suceso->crear($model_usuario->id, 'usuario_cambio_rango', FALSE, $model_usuario->id, $rango, Usuario::$usuario_id);
         }
         // Informo el resultado.
         $_SESSION['flash_success'] = 'El rango fue cambiado correctamente correctamente.';
         Request::redirect('/admin/usuario');
     }
     // Cargo la vista.
     $vista = View::factory('admin/usuario/cambiar_rango');
     // Seteo la información.
     $vista->assign('usuario', $model_usuario->as_array());
     // Cargamos los rangos.
     $lst = $model_rango->listado(Usuario::usuario()->rango()->orden);
     foreach ($lst as $k => $v) {
         $lst[$k] = $v->as_array();
     }
     $vista->assign('rangos', $lst);
     // Cargamos plantilla administracion.
     $admin_template = View::factory('admin/template');
     $admin_template->assign('contenido', $vista->parse());
     unset($portada);
     $admin_template->assign('top_bar', Controller_Admin_Home::submenu('usuario'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $admin_template->parse());
 }
Ejemplo n.º 13
0
 /**
  * Suceso producido cuando el usuario cambia de rango.
  * @param array $suceso Datos del suceso.
  * @return array
  */
 protected static function suceso_usuario_seguir($suceso)
 {
     // Cargo datos del usuario.
     $model_usuario = new Model_Usuario((int) $suceso['objeto_id']);
     // Cargo datos del seguidor.
     $model_seguidor = new Model_Usuario((int) $suceso['objeto_id1']);
     return array('usuario' => $model_usuario->as_array(), 'seguidor' => $model_seguidor->as_array());
 }
Ejemplo n.º 14
0
 /**
  * Terminamos la suspensión de un usuario.
  * @param int $usuario ID del usuario a quitar la suspensión.
  */
 public function action_terminar_suspension($usuario)
 {
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_USUARIO_SUSPENDER)) {
         $_SESSION['flash_error'] = 'No tienes permiso para acceder a esa sección.';
         Request::redirect('/');
     }
     // Valido el ID.
     $usuario = (int) $usuario;
     // Verifico que exista el usuario.
     $model_usuario = new Model_Usuario($usuario);
     if (!$model_usuario->existe()) {
         $_SESSION['flash_error'] = 'El usuario del que desea terminar la suspención no se encuentra disponible.';
         Request::redirect('/moderar/gestion/usuarios');
     }
     // Verifico el estado.
     if ($model_usuario->estado !== Model_Usuario::ESTADO_SUSPENDIDA) {
         $_SESSION['flash_error'] = 'El usuario del que desea terminar la suspención no se encuentra disponible.';
         Request::redirect('/moderar/gestion/usuarios');
     }
     // Borramos la suspensión.
     $model_usuario->suspension()->anular();
     // Creamos el suceso.
     $model_suceso = new Model_Suceso();
     if (Usuario::$usuario_id != $model_usuario->id) {
         $model_suceso->crear($model_usuario->id, 'usuario_fin_suspension', TRUE, $model_usuario->id, Usuario::$usuario_id);
         $model_suceso->crear(Usuario::$usuario_id, 'usuario_fin_suspension', FALSE, $model_usuario->id, Usuario::$usuario_id);
     } else {
         $model_suceso->crear($model_usuario->id, 'usuario_fin_suspension', FALSE, $model_usuario->id, Usuario::$usuario_id);
     }
     // Informamos el resultado.
     $_SESSION['flash_success'] = 'Suspensión anulada correctamente.';
     Request::redirect('/moderar/gestion/usuarios');
 }
Ejemplo n.º 15
0
 /**
  * Configuramos parámetros del sistema.
  */
 public function action_configuracion()
 {
     // Cargo la vista.
     $vista = View::factory('configuracion');
     // Seteo el menu.
     $this->template->assign('steps', $this->steps(4));
     // Cargamos las configuraciones.
     $model_configuracion = new Model_Configuracion();
     // Datos por defecto.
     foreach (array('nombre', 'descripcion', 'usuario', 'email', 'password', 'cpassword') as $v) {
         $vista->assign($v, '');
         $vista->assign('error_' . $v, FALSE);
     }
     if (Request::method() == 'POST') {
         // Cargo los valores.
         foreach (array('nombre', 'descripcion', 'usuario', 'email', 'password', 'cpassword') as $v) {
             ${$v} = isset($_POST[$v]) ? trim($_POST[$v]) : '';
         }
         // Limpio los valores.
         $nombre = preg_replace('/\\s+/', ' ', $_POST['nombre']);
         $descripcion = preg_replace('/\\s+/', ' ', $_POST['descripcion']);
         // Seteo nuevos valores a las vistas.
         foreach (array('nombre', 'descripcion', 'usuario', 'email', 'password', 'cpassword') as $v) {
             $vista->assign($v, ${$v});
         }
         $error = FALSE;
         // Verifico el nombre.
         if (!preg_match('/^[a-z0-9áéíóúñ !\\-_\\.]{2,20}$/iD', $nombre)) {
             $error = TRUE;
             $vista->assign('error_nombre', 'El nombre debe tener entre 2 y 20 caracteres. Pueden ser letras, números, espacios, !, -, _, . y \\');
         }
         // Verifico el contenido.
         if (!preg_match('/^[a-z0-9áéíóúñ !\\-_\\.]{5,30}$/iD', $descripcion)) {
             $error = TRUE;
             $vista->assign('error_descripcion', 'La descripción debe tener entre 5 y 30 caracteres. Pueden ser letras, números, espacios, !, -, _, . y \\');
         }
         // Verifico usuario.
         if (!preg_match('/^[a-zA-Z0-9]{4,16}$/D', $usuario)) {
             $error = TRUE;
             $vista->assign('error_usuario', 'El usuario debe tener entren 4 y 16 caracteres alphanumericos.');
         }
         // Verifico email.
         if (!preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/D', $email)) {
             $error = TRUE;
             $vista->assign('error_usuario', 'El E-Mail ingresado no es válido.');
         }
         // Verifico contraseña.
         if (!isset($password[6]) || isset($password[21])) {
             $error = TRUE;
             $vista->assign('error_password', 'La contraseña debe tener entre 6 y 20 caracteres.');
         }
         // Verifico contraseña repetida válida.
         if ($password !== $cpassword) {
             $error = TRUE;
             $vista->assign('error_cpassword', 'Las contraseñas ingresadas no coinciden.');
         }
         // Actualizo los valores.
         if (!$error) {
             // Actualizo las configuraciones.
             $model_configuracion->nombre = $nombre;
             $model_configuracion->descripcion = $descripcion;
             // Cargo modelo de usuarios.
             $model_usuario = new Model_Usuario();
             // Verifico no exista la cuenta.
             if ($model_usuario->exists_nick($usuario)) {
                 // Actualizo los datos.
                 $model_usuario->load_by_nick($usuario);
                 $model_usuario->actualizar_contrasena($password);
                 $model_usuario->actualizar_campo('rango', 1);
                 $model_usuario->actualizar_campo('estado', Model_Usuario::ESTADO_ACTIVA);
                 $model_usuario->actualizar_campo('email', $email);
             } else {
                 // Creo la cuenta.
                 $model_usuario->register($usuario, $email, $password, 1);
                 $model_usuario->load_by_nick($usuario);
                 $model_usuario->actualizar_campo('estado', Model_Usuario::ESTADO_ACTIVA);
             }
             // Seteo el paso como terminado.
             if ($_SESSION['step'] < 4) {
                 $_SESSION['step'] = 4;
             }
             // Redirecciono al siguiente.
             Request::redirect('/installer/finalizacion/');
         }
     }
     // Seteo la vista.
     $this->template->assign('contenido', $vista->parse());
 }
Ejemplo n.º 16
0
 public function action_todos_personas()
 {
     // Verifica que solo un usuario logueado este entrando
     Model_Usuario::otorgar_acceso($this->request);
     $this->set_titulo("Todos las personas registradas");
     $personas = ORM::factory("persona")->find_all();
     $vista = View::factory("persona/vertodos")->set("personas", $personas);
     $this->contenido = $vista;
 }
Ejemplo n.º 17
0
 /**
  * Verifica si la sesion ya esta iniciada
  */
 public static function otorgar_acceso(Request $request)
 {
     if (!Model_Usuario::esta_iniciado()) {
         $request->redirect("admin/inicio_sesion");
     }
 }
Ejemplo n.º 18
0
 /**
  * Buscamos un elemento.
  * @param string $query Cadena a buscar.
  * @param int $pagina Numero de página a mostrar.
  * @param string $categoria Nombre de la categoria a utilizar.
  * @param string $usuario Nombre del usuario a utilizar.
  * @return mixed
  */
 public function action_q($query, $pagina, $categoria, $usuario)
 {
     // Verificamos si es POST y redireccionamos.
     if (Request::method() == 'POST') {
         // Query.
         $q = isset($_POST['q']) ? urlencode($_POST['q']) : '';
         // Categoria.
         $c = isset($_POST['categoria']) ? urlencode($_POST['categoria']) : '';
         // Usuario
         $u = isset($_POST['usuario']) ? urlencode($_POST['usuario']) : '';
         if (!empty($u)) {
             $url = sprintf('/buscador/q/%s/1/%s/%s', $q, $c, $u);
         } elseif (!empty($c)) {
             $url = sprintf('/buscador/q/%s/1/%s', $q, $c);
         } else {
             $url = sprintf('/buscador/q/%s', $q);
         }
         Request::redirect($url);
     }
     // Limpiamos la consulta.
     $query = preg_replace('/\\s+/', ' ', urldecode(trim($query)));
     // Limpiamos la categoria.
     $categoria = urldecode(trim($categoria));
     if ($categoria !== 'todos') {
         // Cargamos la categoria.
         $model_categoria = new Model_Categoria();
         if ($model_categoria->existe_seo($categoria)) {
             $model_categoria->load_by_seo($categoria);
         } else {
             unset($model_categoria);
         }
     }
     unset($categoria);
     // Limpiamos nombre de usuario.
     $usuario = urldecode(trim($usuario));
     // Cargamos el usuario.
     $model_usuario = new Model_Usuario();
     if ($model_usuario->exists_nick($usuario)) {
         $model_usuario->load_by_nick($usuario);
     } else {
         unset($model_usuario);
     }
     unset($usuario);
     // Cargamos la vista.
     $vista = View::factory('buscador/index');
     // Verificamos si hay consulta.
     if (!empty($query)) {
         // Cantidad de elementos por pagina.
         $model_configuracion = new Model_Configuracion();
         $cantidad_por_pagina = $model_configuracion->get('elementos_pagina', 20);
         // Formato de la página.
         $pagina = (int) $pagina > 0 ? (int) $pagina : 1;
         // Realizamos la busqueda.
         $model_post = new Model_Post();
         list($listado, $cantidad) = $model_post->buscar($query, $pagina, $cantidad_por_pagina, isset($model_categoria) ? $model_categoria->id : NULL, isset($model_usuario) ? $model_usuario->id : NULL);
         // Verifivo que la página seleccionada sea válida.
         if (count($listado) == 0 && $pagina != 1) {
             Request::redirect(sprintf('/buscador/q/%s/1/%s/%s', $query, isset($model_categoria) ? $model_categoria->seo : '', isset($model_usuario) ? $model_usuario->id : ''));
         }
         // Paginación.
         $paginador = new Paginator($cantidad, $cantidad_por_pagina);
         $vista->assign('paginacion', $paginador->get_view($pagina, "/buscador/q/{$query}/%s/" . (isset($model_categoria) ? $model_categoria->seo : '') . '/' . (isset($model_usuario) ? $model_usuario->id : '')));
         unset($paginador);
         $vista->assign('total', $cantidad);
         // Procesamos listado de post.
         foreach ($listado as $k => $v) {
             $a = $v->as_array();
             $a['usuario'] = $v->usuario()->as_array();
             $a['puntos'] = $v->puntos();
             $a['comentarios'] = $v->cantidad_comentarios();
             $a['categoria'] = $v->categoria()->as_array();
             $listado[$k] = $a;
         }
         $vista->assign('resultados', $listado);
         unset($listado);
     }
     // Armamos la vista.
     $vista->assign('q', $query);
     // Listado de categorias.
     $mc = new Model_Categoria();
     $vista->assign('categorias', $mc->lista());
     unset($mc);
     $vista->assign('categoria', isset($model_categoria) ? $model_categoria->seo : 'todos');
     // Usuario actual.
     $vista->assign('usuario', isset($model_usuario) ? $model_usuario->nick : '');
     // Menu.
     $this->template->assign('master_bar', parent::base_menu('posts'));
     $this->template->assign('top_bar', Controller_Home::submenu('buscador'));
     // Asignamos la vista.
     $this->template->assign('contenido', $vista->parse());
 }
Ejemplo n.º 19
0
 /**
  * Enviamos un mensaje.
  * @param int $tipo Tipo de acción a tomar. 1 Responder, 2 Reenviar, NULL nuevo mensaje.
  * @param int $mensaje_id ID del mensaje a tomar para las acciones especiales. NULL para nuevo.
  */
 public function action_nuevo($tipo, $mensaje_id)
 {
     // Verificamos si es reenvio o respuesta.
     // 1 - Responder.
     // 2 - Reenviar.
     if ($tipo == 1 || $tipo == 2) {
         // Cargamos el mensaje padre.
         $model_padre = new Model_Mensaje((int) $mensaje_id);
         if (is_array($model_padre->as_array())) {
             if ($model_padre->receptor_id == Usuario::$usuario_id) {
                 $padre = $model_padre;
             }
         }
         unset($model_padre);
     }
     // Asignamos el título.
     $this->template->assign('title', 'Mensajes - Enviar mensaje');
     // Cargamos la vista.
     $view = View::factory('mensaje/nuevo');
     // Informamos tipo y mensaje_id a la vista.
     if (isset($padre)) {
         $view->assign('tipo', $tipo);
         $view->assign('mensaje_id', (int) $mensaje_id);
     }
     // Elementos por defecto.
     foreach (array('para', 'asunto', 'contenido', 'error_para', 'error_asunto', 'error_contenido') as $k) {
         $view->assign($k, '');
     }
     // Obtenemos los datos y seteamos valores.
     foreach (array('para', 'asunto', 'contenido') as $k) {
         ${$k} = isset($_POST[$k]) ? $_POST[$k] : '';
         $view->assign($k, ${$k});
     }
     // Por defecto segun tipo de llamada.
     if (isset($padre)) {
         if ($tipo == 1) {
             $para = $padre->emisor()->nick;
             $view->assign('para', $para);
             $view->assign('asunto', 'RE: ' . $padre->asunto);
         } else {
             $view->assign('asunto', $padre->asunto);
             $view->assign('contenido', $padre->contenido);
         }
     }
     if (Request::method() == 'POST') {
         $error = FALSE;
         // Verificamos el asunto.
         if (!preg_match('/^[a-zA-Z0-9áéíóú\\-,\\.:\\s]{6,60}$/D', $asunto)) {
             $view->assign('error_asunto', 'El formato del asunto no es correcto.');
             $error = TRUE;
         }
         // Verificamos lista de usuarios.
         if (!preg_match('/^(([a-zA-Z0-9áéíóúAÉÍÓÚÑñ ]{4,16})(,(\\s)?)?){1,}$/D', $para)) {
             $view->assign('error_para', 'No introdujo una lista de usuarios válida.');
             $error = TRUE;
         } else {
             if (isset($padre) && $tipo == 1) {
                 $usuarios = array($padre->emisor());
             } else {
                 // Verificamos cada uno de los usuarios.
                 $u_list = explode(',', $para);
                 $model_usuario = new Model_Usuario();
                 $usuarios = array();
                 foreach ($u_list as $u) {
                     $u = trim($u);
                     if ($model_usuario->exists_nick($u)) {
                         $model_usuario->load_by_nick($u);
                         if ($model_usuario->id == $_SESSION['usuario_id']) {
                             $view->assign('error_para', "No puedes enviarte mensaje a ti mismo.");
                             $error = TRUE;
                             break;
                         }
                         $usuarios[$u] = $model_usuario;
                         $model_usuario = new Model_Usuario();
                     } else {
                         $view->assign('error_para', "El usuario '{$u}' no es válido.");
                         $error = TRUE;
                     }
                 }
                 unset($model_usuario);
             }
         }
         // Verificamos el contenido.
         $contenido_clean = preg_replace('/\\[([^\\[\\]]+)\\]/', '', $contenido);
         if (!isset($contenido_clean[20]) || isset($contenido[600])) {
             $view->assign('error_contenido', 'El mensaje debe tener entre 20 y 600 caractéres.');
             $error = TRUE;
         }
         unset($contenido_clean);
         // Procedemos a crear el mensaje.
         if (!$error) {
             // Evitamos XSS.
             $contenido = htmlentities($contenido, ENT_NOQUOTES, 'UTF-8');
             // Formateamos los campos.
             $asunto = trim(preg_replace('/\\s+/', ' ', $asunto));
             $errors = array();
             foreach ($usuarios as $u) {
                 $model_mensaje = new Model_Mensaje();
                 if (isset($padre) && $tipo == 1) {
                     $padre->actualizar_estado(Model_Mensaje::ESTADO_RESPONDIDO);
                     $mensaje_id = $model_mensaje->enviar(Usuario::$usuario_id, $u->id, $asunto, $contenido, $padre->id);
                 } else {
                     if (isset($padre) && $tipo == 2) {
                         $padre->actualizar_estado(Model_Mensaje::ESTADO_REENVIADO);
                     }
                     $mensaje_id = $model_mensaje->enviar(Usuario::$usuario_id, $u->id, $asunto, $contenido);
                 }
                 if ($mensaje_id > 0) {
                     $model_suceso = new Model_Suceso();
                     if (Usuario::$usuario_id != $u->id) {
                         $model_suceso->crear($u->id, 'nuevo_mensaje', TRUE, $mensaje_id);
                         $model_suceso->crear(Usuario::$usuario_id, 'nuevo_mensaje', FALSE, $mensaje_id);
                     } else {
                         $model_suceso->crear($u->id, 'nuevo_mensaje', FALSE, $mensaje_id);
                     }
                 } else {
                     $errors[] = "Se produjo un error cuando se creaba enviaba el mensaje a '{$u->nick}'. Reintente.";
                 }
             }
             if (count($errors) == 0) {
                 $_SESSION['flash_success'] = 'Mensajes enviados correctamente.';
                 Request::redirect('/mensaje/');
             } else {
                 $view->assign('error', $errors);
             }
         }
     }
     // Menu.
     $this->template->assign('master_bar', parent::base_menu('inicio'));
     $this->template->assign('top_bar', $this->submenu('nuevo'));
     // Asignamos la vista.
     $this->template->assign('contenido', $view->parse());
 }
Ejemplo n.º 20
0
Archivo: tops.php Proyecto: 4bs4/marifa
 /**
  * Mostramos tops de usuarios.
  * @param string $categoria Categoria para filtar los tops de usuario.
  * @param int $periodo Período para filtar usuarios.
  */
 public function action_usuarios($categoria, $periodo)
 {
     // Cargamos la portada.
     $portada = View::factory('tops/usuarios');
     // Seteo el menu.
     $this->template->assign('master_bar', parent::base_menu('tops'));
     $this->template->assign('top_bar', $this->submenu());
     // Cargo las categorias.
     $model_categorias = new Model_Categoria();
     // Seteo el listado en la vista.
     $portada->assign('categorias', $model_categorias->lista());
     // Obtengo la categoria por POST.
     //TODO: hacer una mejora con jQuery.
     if (isset($_POST['categoria'])) {
         $categoria = $_POST['categoria'];
     }
     // Verifico si existe la categoria.
     $categoria = trim($categoria) == '' ? NULL : trim($categoria);
     if ($categoria !== NULL && $categoria != 'todas') {
         if (!$model_categorias->load_by_seo($categoria)) {
             Request::redirect('/tops');
         } else {
             $categoria_id = $model_categorias->id;
             $categoria = $model_categorias->seo;
         }
     } else {
         $categoria = 'todas';
         $categoria_id = NULL;
     }
     // Seteo la categoria actual.
     $portada->assign('categoria', $categoria);
     // Obtengo el período.
     $periodo = (int) $periodo;
     // Verifico por un válido.
     if ($periodo != 0 && $periodo != 1 && $periodo != 2 && $periodo != 3 && $periodo != 4) {
         Request::redirect('/tops');
     }
     $portada->assign('periodo', $periodo);
     // Cargo modelo de usuarios.
     $model_usuario = new Model_Usuario();
     $portada->assign('puntos', $model_usuario->top_puntos($categoria_id, $periodo));
     $portada->assign('seguidores', $model_usuario->top_seguidores($periodo));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $portada->parse());
 }
Ejemplo n.º 21
0
 /**
  * Suspendemos a un usuario.
  * @param int $id ID del usuario a suspender.
  */
 public function action_suspender_usuario($id)
 {
     // Verifico permisos.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_USUARIO_VER_DENUNCIAS)) {
         $_SESSION['flash_error'] = 'No tienes permiso para acceder a esa sección.';
         Request::redirect('/');
     }
     // Verificamos no sea actual.
     if ($id == Usuario::$usuario_id) {
         $_SESSION['flash_error'] = 'No puedes enviarte una advertencia a vos mismo.';
         Request::redirect('/moderar/denuncias/usuarios/');
     }
     // Aseguramos un ID entero.
     $id = (int) $id;
     // Cargamos el modelo del usuario.
     $model_usuario = new Model_Usuario($id);
     if (!$model_usuario->existe()) {
         $_SESSION['flash_error'] = 'El usuario que deseas suspender no se encuentra disponible.';
         Request::redirect('/moderar/denuncias/usuarios/');
     }
     // Verifico no esté suspendido.
     $s = $model_usuario->suspension();
     if ($s !== NULL) {
         if ($s->restante() <= 0) {
             $s->anular();
         } else {
             $_SESSION['flash_error'] = 'El usuario que deseas suspender no se encuentra disponible.';
             Request::redirect('/moderar/denuncias/usuarios/');
         }
     }
     unset($s);
     // Cargamos la vista.
     $vista = View::factory('/moderar/denuncias/suspender_usuario');
     // Información del usuario a suspender.
     $vista->assign('usuario', $model_usuario->as_array());
     // Valores por defecto y errores.
     $vista->assign('motivo', '');
     $vista->assign('error_motivo', FALSE);
     $vista->assign('fin', '');
     $vista->assign('error_fin', FALSE);
     if (Request::method() == 'POST') {
         // Seteamos sin error.
         $error = FALSE;
         // Obtenemos los campos.
         $motivo = isset($_POST['motivo']) ? $_POST['motivo'] : NULL;
         $fin = isset($_POST['fin']) ? $_POST['fin'] : NULL;
         // Valores para cambios.
         $vista->assign('motivo', $motivo);
         $vista->assign('fin', $fin);
         // Quitamos BBCode para dimenciones.
         $motivo_clean = preg_replace('/\\[([^\\[\\]]+)\\]/', '', $motivo);
         if (!isset($motivo_clean[10]) || isset($motivo_clean[200])) {
             $error = TRUE;
             $vista->assign('error_motivo', 'El motivo debe tener entre 10 y 200 caractéres');
         }
         unset($motivo_clean);
         // Verificamos la fecha.
         if (empty($fin)) {
             $error = TRUE;
             $vista->assign('error_fin', 'La fecha de finalización no es correcta.');
         } else {
             $fin = strtotime($fin);
             if ($fin <= time()) {
                 $error = TRUE;
                 $vista->assign('error_fin', 'La fecha de finalización no es correcta.');
             }
         }
         if (!$error) {
             // Evitamos XSS.
             $motivo = htmlentities($motivo, ENT_NOQUOTES, 'UTF-8');
             // Creamos la suspensión.
             $model_suspension = new Model_Usuario_Suspension();
             $s_id = $model_suspension->nueva($id, Usuario::$usuario_id, $motivo, $fin);
             // Enviamos el suceso.
             $model_suceso = new Model_Suceso();
             if (Usuario::$usuario_id != $id) {
                 $model_suceso->crear($id, 'usuario_suspender', TRUE, $s_id);
                 $model_suceso->crear(Usuario::$usuario_id, 'usuario_suspender', FALSE, $s_id);
             } else {
                 $model_suceso->crear($id, 'usuario_suspender', FALSE, $s_id);
             }
             // Seteamos mensaje flash y volvemos.
             $_SESSION['flash_success'] = 'Usuario suspendido correctamente.';
             Request::redirect('/moderar/denuncias/usuarios/');
         }
     }
     // Seteamos el menu.
     $this->template->assign('master_bar', parent::base_menu('moderar'));
     // Cargamos plantilla administracion.
     $admin_template = View::factory('moderar/template');
     $admin_template->assign('contenido', $vista->parse());
     unset($portada);
     $admin_template->assign('top_bar', Controller_Moderar_Home::submenu('denuncias_usuarios'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $admin_template->parse());
 }
Ejemplo n.º 22
0
 public function setseguidorAction()
 {
     self::requireIsPost();
     General::permissaoAuth(false);
     $param = array();
     $param['nu_usuario'] = $this->getRequest()->getParam('nu_usuario');
     $param['modo'] = $this->getRequest()->getParam('modo');
     Model_Usuario::getInstance()->setSeguidor($param);
     echo json_encode(array('status' => 1, 'msg' => "success", 'html' => $this->view->partial('helpers/bt_seguir.phtml', array('modo' => $param['modo'] == 'seguir' ? '' : 'seguir', 'nu_usuario' => $param['nu_usuario']))));
 }
Ejemplo n.º 23
0
 /**
  * Enviamos un correo para recuperar la contraseña.
  */
 public function action_recuperar()
 {
     // Verificamos si el usuario está conectado.
     if (Usuario::is_login()) {
         // Lo enviamos a la portada.
         Request::redirect('/');
     }
     // Asignamos el título.
     $this->template->assign('title', 'Recuperar clave.');
     // Cargamos la vista del usuario.
     $view_usuario = View::factory('usuario/recuperar');
     // Cargo datos.
     $view_usuario->assign('email', '');
     $view_usuario->assign('error_email', '');
     // Verificamos si se han enviado los datos.
     if (Request::method() == 'POST') {
         $error = FALSE;
         // Verificamos los datos enviados.
         $email = isset($_POST['email']) ? trim($_POST['email']) : '';
         if (!$error) {
             // Verfico existencia del correo.
             $model_usuario = new Model_Usuario();
             if (!$model_usuario->exists_email($email)) {
                 // Verifico existencia de nick.
                 if (!$model_usuario->exists_nick($email)) {
                     $view_usuario->assign('error_email', 'El nick o correo ingresado no existe.');
                     $error = TRUE;
                 } else {
                     $model_usuario->load_by_nick($email);
                     $error = FALSE;
                 }
             } else {
                 $model_usuario->load_by_email($email);
                 $error = FALSE;
             }
         }
         if (!$error) {
             // Elimino posibles tokens del usuario.
             $model_recuperacion = new Model_Usuario_Recuperacion();
             $model_recuperacion->borrar_por_usuario($model_usuario->id);
             // Genero un nuevo token.
             $token = $model_recuperacion->crear($model_usuario->id, $model_usuario->email, Model_Usuario_Recuperacion::TIPO_RECUPERACION);
             // Configuraciones del sitio.
             $model_config = new Model_Configuracion();
             // Creo el mensaje de correo.
             $message = Email::get_message();
             $message->setSubject('Restaurar contraseña de ' . $model_config->get('nombre', 'Marifa'));
             $message->setFrom('*****@*****.**', 'Ares');
             $message->setTo($email, $model_usuario->nick);
             // Cargo la vista.
             $message_view = View::factory('emails/recuperar');
             $message_view->assign('codigo', $token);
             $message_view->assign('titulo', $model_config->get('nombre', 'Marifa'));
             $message->setBody($message_view->parse());
             unset($message_view);
             // Envio el email.
             $mailer = Email::get_mailer();
             $mailer->send($message);
             // Registro completo.
             $view_usuario = View::factory('usuario/recuperar_completo');
         }
     }
     // Agregamos el la vista a la plantilla.
     $this->template->assign('contenido', $view_usuario->parse());
 }
Ejemplo n.º 24
0
Archivo: home.php Proyecto: 4bs4/marifa
 /**
  * Portada del sitio.
  * @param int $pagina Número de página para lo últimos posts.
  */
 public function action_index($pagina)
 {
     // Cargamos la portada.
     $portada = View::factory('home/index');
     // Seteo el menu.
     $this->template->assign('master_bar', parent::base_menu('posts'));
     $this->template->assign('top_bar', self::submenu('inicio'));
     // Cargamos datos de posts.
     $model_post = new Model_Post();
     // Cantidad posts y comentarios en posts.
     $portada->assign('cantidad_posts', $model_post->cantidad());
     $portada->assign('cantidad_comentarios_posts', $model_post->cantidad_comentarios());
     // Cantidad de elementos por pagina.
     $model_configuracion = new Model_Configuracion();
     $cantidad_por_pagina = $model_configuracion->get('elementos_pagina', 20);
     // Formato de la página.
     $pagina = (int) $pagina > 0 ? (int) $pagina : 1;
     if ($pagina == 1) {
         // Cargo fijos.
         $post_sticky = $model_post->sticky();
         // Extendemos la información de los posts.
         foreach ($post_sticky as $k => $v) {
             $a = $v->as_array();
             $a['usuario'] = $v->usuario()->as_array();
             $a['puntos'] = $v->puntos();
             $a['comentarios'] = $v->cantidad_comentarios(Model_Post_Comentario::ESTADO_VISIBLE);
             $a['categoria'] = $v->categoria()->as_array();
             $post_sticky[$k] = $a;
         }
         // Seteo y limpio.
         $portada->assign('sticky', $post_sticky);
         unset($post_sticky);
     }
     // Ultimos posts
     $post_list = $model_post->obtener_ultimos($pagina, $cantidad_por_pagina);
     // Verifivo validez de la pagina.
     if (count($post_list) == 0 && $pagina != 1) {
         Request::redirect('/');
     }
     // Paginación.
     $paginador = new Paginator($model_post->cantidad(Model_Post::ESTADO_ACTIVO), $cantidad_por_pagina);
     $portada->assign('paginacion', $paginador->get_view($pagina, '/home/index/%d'));
     unset($paginador);
     // Extendemos la información de los posts.
     foreach ($post_list as $k => $v) {
         $a = $v->as_array();
         $a['usuario'] = $v->usuario()->as_array();
         $a['puntos'] = $v->puntos();
         $a['comentarios'] = $v->cantidad_comentarios(Model_Post_Comentario::ESTADO_VISIBLE);
         $a['categoria'] = $v->categoria()->as_array();
         $post_list[$k] = $a;
     }
     $portada->assign('ultimos_posts', $post_list);
     unset($post_list);
     // Cargamos TOP posts.
     $post_top_list = $model_post->obtener_tops();
     // Extendemos la información de los posts.
     foreach ($post_top_list as $k => $v) {
         $a = $v->as_array();
         $a['puntos'] = $v->puntos();
         $post_top_list[$k] = $a;
     }
     $portada->assign('top_posts', $post_top_list);
     unset($post_top_list, $model_post);
     // Cargamos últimos comentarios.
     $comentario_list = Model_Post_Comentario::obtener_ultimos();
     // Extendemos la información de los comentarios.
     foreach ($comentario_list as $k => $v) {
         $a = $v->as_array();
         $a['usuario'] = $v->usuario()->as_array();
         $a['post'] = $v->post()->as_array();
         $comentario_list[$k] = $a;
     }
     $portada->assign('ultimos_comentarios', $comentario_list);
     unset($comentario_list);
     // Cargamos top usuarios.
     $model_usuario = new Model_Usuario();
     // Cantidad de usuarios
     $portada->assign('cantidad_usuarios', $model_usuario->cantidad());
     $portada->assign('cantidad_usuarios_online', $model_usuario->cantidad_activos());
     // Top de usuarios.
     $usuario_top_list = $model_usuario->obtener_tops();
     // Extendemos la información de los usuarios.
     foreach ($usuario_top_list as $k => $v) {
         $a = $v->as_array();
         $a['puntos'] = $v->cantidad_puntos();
         $usuario_top_list[$k] = $a;
     }
     $portada->assign('usuario_top', $usuario_top_list);
     unset($usuario_top_list, $model_usuario);
     // Cargamos ultimas fotos.
     $model_foto = new Model_Foto();
     $foto_list = $model_foto->obtener_ultimas(1, 1);
     // Extendemos la información de las fotos.
     foreach ($foto_list as $k => $v) {
         $foto_list[$k] = $v->as_array();
     }
     $portada->assign('ultimas_fotos', $foto_list);
     unset($foto_list);
     // Cantidad fotos y comentarios en fotos.
     $portada->assign('cantidad_fotos', $model_foto->cantidad());
     $portada->assign('cantidad_comentarios_fotos', $model_foto->cantidad_comentarios());
     unset($model_foto);
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $portada->parse());
 }