* solo si el script puede continuar */ if ($psContinue) { $username = $_GET['user']; //obtenemos los datos de la db $consulta = "SELECT user_id, user_name, user_activo, user_baneado FROM u_miembros WHERE LOWER(user_name) = :uname"; $valores = array('uname' => $username); $usuario = $psDb->db_execute($consulta, $valores, 'fetch_assoc'); //comprobamos si el usuario existe if (empty($usuario['user_id']) || $usuario['user_activo'] != 1 && !$psUser->permisos['movcud'] && !$psUser->admod || $usuario['user_baneado'] != 0 && !$psUser->permisos['movcus'] && !$psUser->admod) { $psPage = 'aviso'; $psAjax = 0; $smarty->assign("psAviso", array('titulo' => 'Error!', 'mensaje' => empty($usuario['user_id']) ? 'El usuario no existe' : 'La cuenta de ' . $usuario['user_name'] . ' se encuentra suspendida', 'but' => 'Ir a la página principal', 'link' => "{$psCore->settings['url']}")); } else { include '../class/c.cuenta.php'; $psCuenta =& psCuenta::getInstance(); include '../extra/datos.php'; $psInfo = $psCuenta->cargarInfo($usuario['user_id']); $psInfo['uid'] = $usuario['user_id']; //comprobamos si el usuario está online $online = time() - $psCore->settings['c_last_active'] * 60; $inactive = $online * 2; //inactivo será el doble del online if ($psInfo['user_lastactive'] > $online) { $psInfo['status'] = array('t' => 'Online', 'css' => 'online'); } elseif ($psInfo['user_lastactive'] > $inactive) { $psInfo['status'] = array('t' => 'Inactivo', 'css' => 'inactive'); } elseif ($psInfo['user_baneado'] > 0) { $psInfo['status'] = array('t' => 'Suspendido', 'css' => 'banned'); } else { $psInfo['status'] = array('t' => 'Offline', 'css' => 'offline');
/** * @funcionalidad creamos una nueva publicación en el muro * @return [type] devolvemos un array con los datos obtenidos si todo ok, sino devolvemos un string con el error obtenido */ public function pubMuro() { global $psDb, $psCore, $psMonitor, $psUser, $psActividad; //obtenemos los datos del formulario $pid = filter_input(INPUT_POST, 'pid'); $datos = filter_input(INPUT_POST, 'data'); $adjunto = filter_input(INPUT_POST, 'adj'); $type = filter_input(INPUT_GET, 'type'); //comprobamos si el usuario permite compartir en su muro //añadimos la clase cuenta para obtener los datos de seguidos y seguidores include 'c.cuenta.php'; $psCuenta =& psCuenta::getInstance(); $privado = $this->getPrivacidad($pid, $psUser->getUserName($pid), $psCuenta->siguiendo($pid), $psCuenta->seguidores($pid)); //comprobamos si permite firmar en su muro if ($privado['mf']['v'] == false) { return '0: ' . $privado['mf']['m']; } //realizamos la acción según el tipo de publicación switch ($type) { //publicar estado case 'status': //reemplazamos los saltos de línea y las tabulaciones $texto = str_replace(array('\\n', '\\t', ' '), '', $datos); //comprobamos si está vacío el campo if (strlen($texto) == 0) { return '0: Tu publicación no puede estar vacía'; } //cargamos el antiflood para evitar sobrecargar el servidor con demasiadas peticiones en poco tiempo $psCore->antiFlood(); //ahora insertamos los datos $insert = "INSERT INTO u_muro (p_user, p_user_pub, p_body, p_date, p_type, p_ip) VALUES (:user, :pub, :body, :dat, :type, :ip)"; $valores = array('user' => $pid, 'pub' => $psUser->user_id, 'body' => $texto, 'dat' => time(), 'type' => 1, 'ip' => $_SERVER['REMOTE_ADDR']); if ($psDb->db_execute($insert, $valores)) { $pub = $psDb->getLastInsertId(); //obtenemos el tipo, estado o publicacion en el muro $type = $pid == $psUser->user_id ? 'status' : 'mpub'; $datos = array('pub_id' => $pub, 'p_user' => $pid, 'p_user_pub' => $psUser->user_id, 'p_body' => $psCore->badWords($psCore->setMenciones($datos), true), 'p_date' => time(), 'p_likes' => 0, 'p_type' => 1, 'likes' => array('link' => 'Me gusta esto!')); } break; //publicar un enlace //publicar un enlace case 'enlace': //comprobamos el enlace $enlace = $this->comprobarEnlaces(true, $adjunto); //comprobamos si nos devuelve un error o no if (substr($enlace, 0, 1) == '0') { return $enlace; } //cargamos el antiflood para evitar sobrecargar el servidor con demasiadas peticiones en poco tiempo $psCore->antiFlood(); //ahora insertamos los datos $insert = "INSERT INTO u_muro (p_user, p_user_pub, p_body, p_date, p_type, p_ip) VALUES (:user, :pub, :body, :dat, :type, :ip)"; $valores = array('user' => $pid, 'pub' => $psUser->user_id, 'body' => $datos, 'dat' => time(), 'type' => 3, 'ip' => $_SERVER['REMOTE_ADDR']); if ($psDb->db_execute($insert, $valores)) { $pub = $psDb->getLastInsertId(); //ahora añadimos en la tabla adjuntos el enlace $insert2 = "INSERT INTO u_muro_adjuntos (pub_id, a_title, a_url) VALUES (:pid, :title, :url)"; $valores2 = array('pid' => $pub, 'title' => $enlace['title'], 'url' => $enlace['url']); if ($psDb->db_execute($insert2, $valores2)) { //obtenemos el tipo $type = 'menlace'; $datos = array('pub_id' => $pub, 'p_user' => $pid, 'p_user_pub' => $psUser->user_id, 'p_body' => $psCore->setMenciones($datos), 'p_date' => time(), 'p_likes' => 0, 'p_type' => 3, 'likes' => array('link' => 'Me gusta esto!'), 'a_title' => $enlace['title'], 'a_url' => $enlace['url']); } } break; //publicar una foto //publicar una foto case 'foto': //comprobamos la foto $foto = $this->comprobarEnlaces(true, $adjunto); //comprobamos si nos devuelve un error o no if (substr($foto, 0, 1) == '0') { return $foto; } //cargamos el antiflood para evitar sobrecargar el servidor con demasiadas peticiones en poco tiempo $psCore->antiFlood(); //ahora insertamos los datos $insert = "INSERT INTO u_muro (p_user, p_user_pub, p_body, p_date, p_type, p_ip) VALUES (:user, :pub, :body, :dat, :type, :ip)"; $valores = array('user' => $pid, 'pub' => $psUser->user_id, 'body' => $datos, 'dat' => time(), 'type' => 2, 'ip' => $_SERVER['REMOTE_ADDR']); if ($psDb->db_execute($insert, $valores)) { $pub = $psDb->getLastInsertId(); //ahora añadimos en la tabla adjuntos la foto $insert2 = "INSERT INTO u_muro_adjuntos (pub_id, a_url, a_img) VALUES (:pid, :url, :img)"; $valores2 = array('pid' => $pub, 'url' => $foto, 'img' => $foto); if ($psDb->db_execute($insert2, $valores2)) { //obtenemos el tipo $type = 'mfoto'; $datos = array('pub_id' => $pub, 'p_user' => $pid, 'p_user_pub' => $psUser->user_id, 'p_body' => $psCore->setMenciones($datos), 'p_date' => time(), 'p_likes' => 0, 'p_type' => 2, 'likes' => array('link' => 'Me gusta esto!'), 'a_url' => $foto, 'a_img' => $foto); } } break; //publicar un video //publicar un video case 'video': //comprobamos el video $video = $this->comprobarEnlaces(true, $adjunto); //comprobamos si nos devuelve un error o no if (substr($video, 0, 1) == '0') { return $video; } //cargamos el antiflood para evitar sobrecargar el servidor con demasiadas peticiones en poco tiempo $psCore->antiFlood(); //ahora insertamos los datos $insert = "INSERT INTO u_muro (p_user, p_user_pub, p_body, p_date, p_type, p_ip) VALUES (:user, :pub, :body, :dat, :type, :ip)"; $valores = array('user' => $pid, 'pub' => $psUser->user_id, 'body' => $datos, 'dat' => time(), 'type' => 4, 'ip' => $_SERVER['REMOTE_ADDR']); if ($psDb->db_execute($insert, $valores)) { $pub = $psDb->getLastInsertId(); //ahora añadimos en la tabla adjuntos el video $insert2 = "INSERT INTO u_muro_adjuntos (pub_id, a_title, a_url, a_img, a_desc) VALUES (:pid, :title, :url, :img, :des)"; $valores2 = array('pid' => $pub, 'title' => $video['title'], 'url' => $video['id'], 'img' => '', 'des' => $psCore->badWords($video['desc'])); if ($psDb->db_execute($insert2, $valores2)) { //obtenemos el tipo $type = 'menlace'; $datos = array('pub_id' => $pub, 'p_user' => $pid, 'p_user_pub' => $psUser->user_id, 'p_body' => $psCore->setMenciones($datos), 'p_date' => time(), 'p_likes' => 0, 'p_type' => 4, 'likes' => array('link' => 'Me gusta esto!'), 'a_title' => $video['title'], 'a_url' => $video['id'], 'a_desc' => $video['desc']); } } break; default: $datos = '0: El campo <strong>tipo</strong> es requerido para esta operación'; } $datos['user_name'] = $psUser->nick; //mandamos la notificacion $psMonitor->setNotificacion(12, $pid, $psUser->user_id, $pub); //creamos la actividad $yo = $pid == $psUser->user_id ? 0 : 2; $psActividad->setActividad(10, $pub, $yo); return $datos; }