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'); }
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>"; }
public static function getInstance() { if (self::$_instance == null) { self::$_instance = new Model_Usuario(); } return self::$_instance; }
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; } }
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'); }
public function login($param) { $arUser = Model_Usuario::getInstance()->login($param); if ($arUser) { $_SESSION['tw_auth'] = $arUser; return true; } else { return false; } }
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(); }
/** * Vista de registro de nuevas informaciones */ public function action_editar($id) { Model_Usuario::otorgar_acceso($this->request); $this->set_titulo("Editar eví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; }
/** * 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'); } }
/** * 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); }
/** * 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()); }
/** * 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()); }
/** * 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()); }
/** * 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'); }
/** * 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()); }
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; }
/** * Verifica si la sesion ya esta iniciada */ public static function otorgar_acceso(Request $request) { if (!Model_Usuario::esta_iniciado()) { $request->redirect("admin/inicio_sesion"); } }
/** * 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()); }
/** * 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()); }
/** * 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()); }
/** * 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()); }
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'])))); }
/** * 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()); }
/** * 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()); }